Apache作为tomcat的反向代理(运行jenkins)

我已经设置了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中的虚拟主机。 我不再看到这个问题。