我已经将 apache 设置为运行 jenkins-CI 的 tomcat 的反向代理。我可以从外部正常访问该站点,除非当我登录到 jenkins 时,它会重定向到我的 lan-hostname,当然它在我的网络之外会失败。之后我可以在浏览器中手动输入原始地址,它会正常工作,直到我必须再次登录。
我想知道这是否是 jenkins 或我的 apache/tomcat 代理设置中的问题。
Jenkins 还在管理页面上报告我的代理设置不正确,但没有再说了。
Apache 虚拟主机配置:
<VirtualHost *:80>
ServerName jenkins.outsideaddress
ServerAlias ci.outsideaddress jenkins.insideaddress ci.insideaddress
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>
还加载了代理和 proxy_http 模块(根据apachectl -M
)
尝试在 ProxyPassReverse 之后添加它。outsideaddress 是您的外部 FQDN。
在 Jenkins 中,查看“管理 Jenkins”,然后向下滚动到“Jenkins URL”字段。将其更改为 jenkins.outsideaddress。
对于内部访问,设置 LAN DNS 以通过重命名或 CNAME 将 jenkins.outsideaddress 解析为 jenkins.insideaddress。您还可以在将重定向到 jenkins.outsideaddress 的内部地址上设置一个 catchall。
我终于能够解决问题(至少我是这么认为的)!
在尝试配置 nexus maven 存储库以在类似的 apache httpd 代理配置下正常工作时,我遇到了类似的问题。然后我碰巧遇到了提交给他们的问题跟踪器的问题,它错误地构建了一些 URL。
在评论中,建议的修复是添加
到 httpd 的 conf 中的虚拟主机,其他代理配置指令所在的位置。我不再看到问题了。