我在同一台机器的不同端口上运行了多个工具。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/
在您的配置中设置。