我的设置:
- 操作系统:Ubuntu 11.04
- HTTP 服务器:nginx 1.2.1
- 编译为HttpHeaders更多模块
- 通过 php-fastcgi 处理 PHP
- (其他不相关的软件 - ruby、python 等)
我的问题:
我正在尝试完全掩盖为页面提供服务的软件(部分是出于安全考虑,主要是因为它很有趣),我已设法更改服务器名称并删除X-Powered-By
php-fastcgi 添加的标头,但在删除三个标头时遇到了麻烦:
Client-Date: Thu, 14 Jun 2012 20:32:34 GMT
Client-Peer: 205.186.146.37:80
Client-Response-Num: 1
我已经使用了more_clear_headers
HttpHeadersMore 模块,但是尽管能够删除X-Powered-By
标题,但却没有效果。
这是在我的http
街区
more_set_headers "Server: Tesco Value";
more_clear_headers "X-Powered-By";
more_clear_headers "Client-*";
more_clear_headers "Client-Date";
more_clear_headers "Client-Response-Num";
more_clear_headers "Client-Peer";
more_clear_headers "X-Pingback";
add_header X-Required-Volume-Setting 11;
add_header X-Required-Speed 88mph;
# NEW: added in thanks to the answer from @kworr - but still doesn't work
fastcgi_hide_header "Client-Date";
fastcgi_hide_header "Client-Response-Num";
fastcgi_hide_header "Client-Peer";
如果您运行,HEAD slightlymore.co.uk
您会发现显式规则和通配符规则都无法删除标头。我猜这些标头是在阶段之后设置的output-header-filter
- 但我想知道是否有人对此有更多信息,尤其是是否有人有解决方案。
更新
@kworr 建议fastcgi_hide_header可能是我正在寻找的 - 但仍然不起作用。也许只是我的系统?
答案1
这些标头根本不存在于 HTTP 响应中。nginx 和 php-fpm 都从未发送过它们,因此尝试阻止它们是没有意义的。
它们是合成的响应标头添加对您的用户代理 libwww-perl 的响应。
如果您不希望看到它们,请使用其他库(例如 libcurl)发出 HTTP 请求。
答案2
我认为fastcgi_hide_header才是您真正需要的。
答案3
我今天遇到了这个问题。
我解决了该问题,并为 fastcgi-fastcgi_param
设置了空白( )值,该值由前缀+大写请求标头创建。''
variable
HTTP_
标题示例Client-Peer
:
fastcgi_param HTTP_CLIENT_PEER '';