Skip to content
📈0️⃣

nginx 配置 add_header

nginx

在 Nginx 中,add_header 指令用于向响应头部添加自定义的 HTTP 头。这个指令可以用来设置服务器返回给客户端的 HTTP 响应头,在响应中添加额外的信息,如安全策略、缓存控制、跨域设置等。

语法介绍

add_header 指令的语法如下:

add_header field value [always];
  • field:指定要添加的 HTTP 头部字段名称。
  • value:指定要添加的 HTTP 头部字段的值。
  • always:可选参数,如果指定了always,则不管响应状态码是多少,都将添加该 HTTP 头部。如果不使用always参数,则只有当响应状态码为 2xx 或 3xx 时,才添加该 HTTP 头部。

以下是一个包含常用 add_header 指令的全量 Nginx 配置示例:

http {
    # ...

    server {
        listen 80;
        server_name example.com;

        # 添加自定义响应头部
        add_header X-MyHeader "Hello world";

        location / {
            root /var/www/html;
            index index.html;
        }

        location /api {
            proxy_pass http://backend/api;

            # 添加跨域资源共享(CORS)头部
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
            add_header Access-Control-Allow-Headers "Authorization, Content-Type";
            add_header Access-Control-Max-Age 3600;
        }

        # ...
    }

    # ...
}

上述配置中,http 块是 Nginx 配置的顶级块,包含了全局的配置信息。server 块是虚拟主机配置块,定义了监听地址和服务器名称。

server 块中,我们使用了 add_header 指令添加了一些自定义的 HTTP 头部。其中,X-MyHeader 是一个自定义的响应头部,值设为 "Hello world"。

另外,在名为 /api 的位置块中,我们使用了多个 add_header 指令来设置跨域资源共享(CORS)相关的响应头部。这些头部配置了允许的跨域请求来源、允许的请求方法、允许的请求头部等信息。

该配置示例只是一个简单的范例,实际应用中的 Nginx 配置可能会更加复杂和具体。建议根据具体需求和场景来使用 add_header 指令,以确保安全性和性能。

常用功能

禁用 iframe

例如,可以通过 add_header 指令设置 X-Frame-Options 头部,防止网站被嵌入到 iframe 中:

add_header X-Frame-Options "SAMEORIGIN";

设置缓存

另一个常见的用法是通过 add_header 指令设置缓存控制头部,控制浏览器对静态资源的缓存策略:

add_header Cache-Control "max-age=31536000";
add_header Expires "Wed, 21 Oct 2025 07:28:00 GMT";

支持跨域

add_header Access-Control-Allow-Origin *;

这条指令设置了 ​Access-Control-Allow-Origin​ 头部,用于支持跨域资源共享(CORS)。

通过将值设置为 ​*​,表示允许所有域名进行跨域请求访问该资源,即允许任何来源的请求访问。

调试和监控

​​add_header Debug-Info "debug info"

这条指令是自定义的,设置了一个名为 ​Debug-Info​ 的自定义响应头部,其值为 "blog"。

这个头部可以用于向响应中添加一些调试信息或标识,帮助开发人员进行调试和监控。

需要注意的是,由于 HTTP 头部是作为响应的一部分发送给客户端的,因此使用 add_header 指令需谨慎,确保设置的 HTTP 头部安全、合理且符合需求。同时,由于 Nginx 的配置会直接影响网站的运行和性能,建议在生产环境中小心测试和验证配置更改。