我已经设置了Apache作为运行jenkins-CI的tomcat的反向代理。 我可以从外面访问该网站的罚款,除了当我loginjenkins,它redirect到我的LAN主机名,当然它失败了我的networking之外。 之后,我可以手动input原始地址到浏览器,它会正常工作,直到我必须再次login。
我不知道这是jenkins中的问题,还是在我的apache / tomcat代理设置中。
jenkins还在pipe理页面上报告说我的代理设置不正确,但是没有再说。
Apache VirtualHostconfiguration:
<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之后添加此项。 外部地址是您的外部FQDN。
RewriteEngine on RedirectMatch ^/(.*)$ http://outsideaddress/$1
在Jenkins中,查看“Manage Jenkins”,然后向下滚动到“Jenkins URL”字段。 把它改成jenkins.outsideaddress。
对于内部访问,设置您的局域网DNS来解决jenkins.outsideaddress jenkins.insideaddress,通过重命名或通过CNAME。 你也可以在内部地址上设置一个redirect到jenkins.outsideaddress的catchall。
我终于能够解决这个问题(至less我是这么认为的)!
当试图configurationnexus maven仓库在类似的apache httpd代理configuration下很好地工作时,我遇到了类似的问题。 然后,我偶然遇到了一个提交给他们的问题追踪器的问题,它错误地构造了一些URL。
在评论中build议的修补程序是添加
ProxyPreserveHost On
到其他代理configuration指令所在的httpd的conf中的虚拟主机。 我不再看到这个问题。