nginx add_header 和 proxy_set_header 详解

1,248 阅读1分钟

add_headerproxy_set_header 是 Nginx 中用于处理 HTTP 头的两个不同指令,它们的作用和使用场景有所不同。

add_header

  • 作用: add_header 用于向响应中添加或修改 HTTP 头字段。它通常用于在响应返回给客户端之前,添加或更改某些头信息。

  • 使用场景: 常用于添加安全相关的头(如 Strict-Transport-SecurityX-Content-Type-Options)或其他自定义头。

  • 配置上下文: 可以在 httpserverlocationiflimit_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-OptionsX-Frame-Options 头会被添加到返回给客户端的响应中。

proxy_set_header

  • 作用: proxy_set_header 用于设置或修改发送到后端服务器的请求头字段。它在反向代理设置中非常常用,用于传递客户端的请求信息给后端服务器。

  • 使用场景: 常用于传递客户端的真实 IP 地址(如 X-Real-IPX-Forwarded-For)、原始主机信息(如 Host)等。

  • 配置上下文: 可以在 httpserverlocation 中使用。

  • 示例:

    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 服务器配置。

获取请求头值参考