proxy_pass_header and proxy_hide_header
这篇文章介绍了 Nginx 中的 `proxy_pass_header` 和 `proxy_hide_header` 指令的作用和用法。`proxy_pass_header` 用于允许特定响应头传递给客户端,默认情况下 Nginx 会过滤部分响应头;而 `proxy_hide_header` 则用于隐藏特定响应头不传递给客户端。文章还通过示例展示了如何配置这些指令,并指出它们的名字容易引起误解。 2025-2-5 02:16:25 Author: dyrnq.com(查看原文) 阅读量:79 收藏

proxy_pass_header 是 Nginx 配置中的一个指令,用于控制是否将上游服务器(即被代理的服务器)返回的响应头传递给客户端。默认情况下,Nginx 会过滤掉一些响应头,如 Date、Server 等。通过 proxy_pass_header,可以显式地允许某些头字段传递给客户端。

proxy_hide_header:与 proxy_pass_header 相反,用于隐藏某些响应头,不传递给客户端。

示例场景
假设你有一个 Nginx 服务器作为反向代理,代理到后端的一个应用服务器。后端服务器返回的响应中包含一个自定义的响应头 X-Custom-Header,你希望将这个头传递给客户端。

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend_server;

        # 允许传递 "X-Custom-Header" 头给客户端
        proxy_pass_header X-Custom-Header;
       # 想隐藏 Server 头
        proxy_hide_header Server;

        # 其他代理配置
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

proxy_pass_header 和 proxy_hide_header 这两个指令的名字确实容易引起误解,尤其是对于刚接触 Nginx 配置的人来说。从名字上看,容易让人误以为是控制 向上游服务器(upstream) 传递或隐藏哪些头,而实际上它们的作用是控制 从上游服务器返回的响应头 是否传递给 客户端(浏览器)。


文章来源: https://dyrnq.com/proxy_pass_header-and-proxy_hide_header/
如有侵权请联系:admin#unsafe.sh