Apache的子域名代理jenkins在tomcat插入额外的目录

我有jenkins在我的服务器上运行tomcat

http://davez0r.com:8080/jenkins 

我想要apache指向一个子域名,而不是:

 http://ci.davez0r.com 

有这样做的方向:

  • https://wiki.jenkins-ci.org/display/JENKINS/Running+Jenkins+behind+Apache
  • https://serverfault.com/a/140161

所以我用我的提供商设置了子域,然后在httpd.conf中添加了一个虚拟主机:

 <VirtualHost *:80> ServerName ci.davez0r.com ProxyPass / http://localhost:8080/jenkins ProxyPassReverse / http://localhost:8080/jenkins ProxyRequests Off <Proxy http://localhost:8080/jenkins*> Order deny,allow Allow from all </Proxy> </VirtualHost> 

这是在我用来重写我的mediawikiurl我的其他虚拟主机条目下面。

然后我重新启动了一切。

现在的问题是,当我去所需的url,我被redirect到:

 http://ci.davez0r.com/jenkins 

在这一点上,我提出了一个空白页面。

我不知道谁在做redirect。 是Jenkins,Apache,Tomcat …?

版本:

  • RHEL 6.2
  • Apache 2.2.15
  • 土狼1.1

这适用于我:

 <VirtualHost *:80> serverName ci.davez0r.com ProxyPass / http://localhost:8080/jenkins/ ProxyPassReverse / http://localhost:8080/jenkins/ ProxyRequests Off ProxyPreserveHost On <Proxy http://localhost:8080/jenkins/*> Order deny,allow Allow from all </Proxy> RewriteEngine on RewriteRule ^/jenkins/(.+) http://%{HTTP_HOST}/$1 </VirtualHost> 

在代理URL之后添加尾部斜线导致无限循环。 然后在ProxyPass URL使其工作后添加尾部斜杠,但是所有静态内容都有错误的URL。

所以我添加了一个重写规则来删除显示出来的extra /jenkins/目录,谁知道为什么。

Tomcat正在生成重定向 – 就其而言 – 是正确的URL。

有几个选项。 到目前为止,最简单的方法是将Jenkins部署为Tomcat上的ROOT Web应用程序。

棘手的选项是弄清楚重定向是如何传回来的,并在httpd中添加适当的配置来改变它。 要解决所有可能会遇到的问题,您可能需要mod_headers和mod_substitute的组合。