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) 传递或隐藏哪些头,而实际上它们的作用是控制 从上游服务器返回的响应头 是否传递给 客户端(浏览器)。