NGINX 直通服务器标头

NGINX 直通服务器标头

如何让 NGINX 传递上游服务器的“服务器”标头?

例如,如果 NGINX 代理到带有服务器标头“Apache2.2 (CentOS)”的 Apache 服务器,它会将其删除并用“NGINX/1.0.1”替换。我们的服务器标头中有​​我们的机器 ID,因此我们需要让 NGINX 停止覆盖它们。

答案1

Nginx 没有办法关闭服务器标头,最接近的选项是服务器令牌指令但这只会关闭版本号。

我从来没有真正尝试过,但是proxy_pass_header 指令 可能允许您将服务器标头指定为应传递给客户端的内容。

我个人建议在为其设计的自定义标头 (X-WHATEVER) 中发送机器 ID,因为使用 RFC 定义的标头进行与其设计目的不同的行为最终会给您带来麻烦。

如果 proxy_pass_header 不起作用,那么我很确定唯一的选择就是修补 Nginx 源以不​​覆盖它。

答案2

指令proxy_pass_header完全符合你的要求:

proxy_pass_header Server;

答案3

对于您的情况,可以使用 $upstream_http_* 变量保留原始响应中的任何标头:

add_header 服务器 $upstream_http_server;

相关内容