插件窝 干货文章 Nginx操作响应头信息如何实现

Nginx操作响应头信息如何实现

header 响应 Nginx add 108    来源:    2025-04-26

Nginx操作响应头信息实现方法

Nginx提供了多种方式来操作HTTP响应头信息,以下是几种常用的实现方法:

1. 添加响应头

使用add_header指令可以添加自定义响应头:

add_header X-Custom-Header "Custom Value";
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";

2. 修改或删除响应头

修改响应头

proxy_hide_header Server;  # 先隐藏原始Server头
add_header Server "MyCustomServer";  # 添加自定义Server头

删除响应头

proxy_hide_header X-Powered-By;
more_clear_headers 'Server';

注意:more_clear_headers需要ngx_headers_more模块支持。

3. 条件性设置响应头

可以根据请求条件设置不同的响应头:

location /secure {
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    add_header Content-Security-Policy "default-src 'self'";
}

4. 使用map模块动态设置响应头

map $http_user_agent $custom_header {
    default "";
    "~*chrome" "Chrome-User";
    "~*firefox" "Firefox-User";
}

server {
    add_header X-User-Type $custom_header;
}

5. 代理场景下的响应头处理

当Nginx作为反向代理时:

location / {
    proxy_pass http://backend;

    # 传递原始响应头
    proxy_pass_header Server;
    proxy_pass_header Set-Cookie;

    # 修改后端返回的响应头
    proxy_hide_header X-Powered-By;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

6. 安全相关响应头配置示例

add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn.example.com; img-src 'self' data: https://*.example.com";

注意事项

  1. add_header指令会继承父作用域的设置,除非在当前作用域重新定义
  2. 某些头信息可能需要使用always参数才能在错误响应中发送
  3. 对于敏感头信息,确保不要泄露服务器内部细节
  4. 在修改响应头前,先测试确保不会影响应用功能

以上方法可以根据实际需求组合使用,灵活控制Nginx的响应头信息。