在同一个盒子上托管多个站点

在同一个盒子上托管多个站点

我在同一台机器的不同端口上运行了多个工具。Jenkins、gitea 等。我为每个工具都设置了一个 CNAME。jenkins.foo.bar、gitea.foo.bar 等。我正在尝试进行设置,以便当我转到 jenkins.foo.bar 时,它实际上会加载 foo.bar:8080,而 gitea.foo.bar 会加载 foo.bar:3000。到目前为止,我已尝试使用 httpd 2.4.6 设置代理传递和反向代理传递。

<VirtualHost gitea.foo.bar:80>
ServerName gitea.foo.bar
ServerAlias gitea.foo.bar gitea.foo
ProxyPreserveHost On
ProxyPass / foo.bar:3000/
ReverseProxyPass / foo.bar:3000/
</VirtualHost>

编辑:实际问题是……最初我收到错误 403 不可用。现在当我转到 gitea.foo 时,它会正确重定向到 foo.bar:3000。gitea.foo.bar 加载 foo.bar 的索引,并且不会被代理捕获。

第二部分:是否可以将gitea.foo保留在地址栏中而不显示重定向的地址?

=========================

编辑(解决方案):非常感谢@GeraldSchneider

SeLinux 阻止了代理传递。请注意,这需要 20 分钟才能完成

setsebool -P httpd_can_network_connect 1

移开 ssl.conf,因为它正在监听 443。

mv /etc/httpd/conf.d/ssl.conf /etc/hhtpd/conf.d/ssl.conf.bak

将以下内容添加到 /etc/httpd/conf/httpd.conf

Listen 443 https
<VirtualHost *:80>
ServerName gitea.foo.bar
Redirect / httpd://gitea.foo.bar:3000
</VirtualHost>

<VirtualHost _default_:443>
ServerName gitea.foo.bar
SSLEngine On
SSlProxyEngine On
SSLCertificateFile /etc/PATH/TO/gitea.foo.bar.pem
SSLCertificateKeyFIle /etc/PATH/TO/gitea.foo.bar.key
ProxyPass / https://gitea.foo.bar:3000/
ProxyPassReverse / https://gitea.foo.bar:3000/
</VirtualHost>

编辑 gitea 配置 /etc/gitea/app.ini

[server]
PROTOCOL = https
ROOT_URL = https://gitea.foo.bar
CERT_FILE = /etc/PATH/TO/gitea.foo.bar.pem
KEY_FILE = /etc/PATH/TO/gitea.foo.bar.key

答案1

您的 Apache 配置很好,问题出在您的后端。

您的后端已针对 URL 配置foo.bar:3000,因此当无法通过此 URL 访问时,它会重定向到那里。

您需要为新 URL 配置后端服务器。每个应用服务器的操作方法都不同,这种设置的通用名称是base url或类似名称。请阅读后端服务器(jenkins、gitea 等)的文档,了解如何执行此操作。

例子:

詹金斯:https://stackoverflow.com/questions/11221238/what-does-jenkins-url-means-in-configuration-settings

希特亚:

[server] ROOT_URL = http://git.example.com/git/在您的配置中设置。

从:https://docs.gitea.io/en-us/reverse-proxies/

相关内容