add_header 和 proxy_set_header 是 Nginx 中用于处理 HTTP 头的两个不同指令,它们的作用和使用场景有所不同。
add_header
-
作用:
add_header用于向响应中添加或修改 HTTP 头字段。它通常用于在响应返回给客户端之前,添加或更改某些头信息。 -
使用场景: 常用于添加安全相关的头(如
Strict-Transport-Security、X-Content-Type-Options)或其他自定义头。 -
配置上下文: 可以在
http、server、location、if、limit_except中使用。 -
示例:
server { listen 80; server_name example.com; location / { add_header X-Content-Type-Options nosniff; add_header X-Frame-Options "SAMEORIGIN"; } }在这个例子中,
X-Content-Type-Options和X-Frame-Options头会被添加到返回给客户端的响应中。
proxy_set_header
-
作用:
proxy_set_header用于设置或修改发送到后端服务器的请求头字段。它在反向代理设置中非常常用,用于传递客户端的请求信息给后端服务器。 -
使用场景: 常用于传递客户端的真实 IP 地址(如
X-Real-IP、X-Forwarded-For)、原始主机信息(如Host)等。 -
配置上下文: 可以在
http、server、location中使用。 -
示例:
server { listen 80; server_name example.com; location / { proxy_pass http://backend_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_set_header用于将客户端的 IP 地址、请求的协议等信息传递给后端服务器。
总结
add_header是用于修改返回给客户端的响应头。proxy_set_header是用于修改发送到后端服务器的请求头。
这两个指令在各自的使用场景中都非常重要,确保正确地配置它们可以帮助你实现更安全和高效的 Nginx 服务器配置。