强制mod_proxy保留一些响应头

时间:2012-03-20 10:18:32

标签: apache jenkins

我们在Jenkins面前使用Apache。 Jenkins的Ajax调用包括n标题,显然需要在往返中幸存。如果我们在端口8080上访问Jenkins,那么响应中包含n标题 ,如果我们通过mod_proxy访问它,n标题将被剥离。

我尝试使用mod_headers来保留此标头,但由于某些原因无效。有没有其他方法可以强制mod_proxy单独留下这个标题?

修改1:

这是Jenkins返回的回复。

HTTP/1.1 200 OK
Server: Winstone Servlet Engine v0.9.10
Content-Type: text/html;charset=UTF-8
n: 131
Connection: Close
Date: Tue, 20 Mar 2012 09:53:42 GMT
X-Powered-By: Servlet/2.5 (Winstone/0.9.10)

这就是Apache的回归:

Connection:close
Content-Encoding:gzip
Content-Type:text/html;charset=UTF-8
Date:Tue, 20 Mar 2012 10:37:21 GMT
Transfer-Encoding:chunked
Vary:Accept-Encoding

编辑2:

事实证明,Nginx 传回适当的标头。这就是我现在设法解决它的方式。原始问题仍然是相关的:有没有办法使用Apache完成它?

2 个答案:

答案 0 :(得分:1)

我找到了一种在apache下解决这个问题的方法。

它是由alex创建的(见https://issues.jenkins-ci.org/browse/JENKINS-327

基本上

  1. 我的jenkins在“http:// localhost:8080 / jenkins”中运行

  2. 我想通过jenkins.mydomain.com访问它。

  3. 现在,当我访问jenkins.mydomain.com时,apache会将我重定向到jenkins.mydomain.com/jenkins,而不是完整但至少可行。

    <VirtualHost *:80>
    ServerName jenkins.mydomain.com
    Redirect / http://jenkins.mydomain.com/jenkins
    <Location /jenkins>
      ProxyPass http://localhost:8080/jenkins
      ProxyPassReverse http://localhost:8080/jenkins
    </Location>
    </VirtualHost>
    

答案 1 :(得分:0)

我最终搬到了Nginx。 Nginx没有删除标题。但是,你仍然不能让Apache单独留下n标题。