繁体   English   中英

有没有办法删除apaches反向代理请求标头?

[英]Is there a way to remove apaches Reverse Proxy Request Headers?

当充当反向代理时,apache会添加x-forwarded标头,如此处所述。

http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#x-headers

在我的配置中,我已将服务器A配置为转发代理。 有一个这样的规则:

RewriteRule proxy:(.*example.com)/(.*) $1.mysecondserver.com/$2 [P]

此规则允许服务器从我的其他服务器请求资源。

在第二个服务器(原始)上,我有一个资源的虚拟主机容器和另一个重写规则,如下所示:

RewriteRule some-regex some-url [P]

它似乎没有这样的意义,但是我遗漏了许多其他的东西,因为它不是问题的一部分。

但是,最终请求具有以下标头:

[X-Forwarded-For] => ip of 1st server
[X-Forwarded-Host] => example.myseconserver.com
[X-Forwarded-Server] => example.com

我想要那些标题消失了。

我似乎无法用mod_headers取消它们。 我可以添加更多条目,但我无法删除它们。

有任何想法吗?

纠正的答案:自硬编码以来没有办法做到这一点

要在mod_proxy_http.c的源代码中修复此问题,请搜索以下部分:

    apr_table_mergen(r->headers_in, "X-Forwarded-Server",
                 r->server->server_hostname);
}

然后立即添加此代码:

// remove any X-Forwarded headers
apr_table_unset(r->headers_in, "X-Forwarded-For");
apr_table_unset(r->headers_in, "X-Forwarded-Host");
apr_table_unset(r->headers_in, "X-Forwarded-Server");

然后通过运行apxs2 -cia mod_proxy_http.c进行编译

自Apache 2以来,正如这个漂亮的答案所说的那样

ProxyAddHeaders Off

理论上禁用它。 根据我的经验,它没有任何效果。 但是,加上

<Proxy *>
  ProxyAddHeaders Off
</Proxy>

  RequestHeader unset X-Forwarded-Host
  RequestHeader unset X-Forwarded-For
  RequestHeader unset X-Forwarded-Server

它开始工作的某个地方。

我在CentOS 5上的httpd 2.2上遇到了同样的问题。安装httpd 2.4是不可能的。 但由于某些原因,我无法完全切换到nginx。 所以我通过在httpd和目标地址之间插入nginx代理来实现它。 所以我有:httpd( localhost:80/path ) - > nginx( localhost:81/path ) - > http://your.destination/path 安装步骤如下:

  1. 根据这些说明安装nginx
  2. 配置nginx以避免安全问题。
  3. 在nginx中添加一个位置,删除那些httpd的反向代理请求标头。 它看起来像这样:

     location /path { proxy_set_header x-forwarded-for ""; proxy_set_header x-forwarded-host ""; proxy_set_header x-forwarded-server ""; proxy_pass http://your.destination/path; } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM