more_set_headers

在 NGINX 中,`more_set_headers` 指令用于设置或修改 HTTP 响应头。

语法more_set_headers 'header-name: header-value' [ ... ];
默认值none
上下文http, server, location, if in location
参数1+

说明

来自 NGINX Headers More 模块的 more_set_headers 指令允许用户在发送给客户端的响应中设置或修改 HTTP 头。它比内置的 NGINX add_header 指令更灵活,允许重置头部并清除现有头部。该指令支持多个参数,包括特定的 HTTP 状态码和 MIME 类型,这些参数可用于决定何时应用这些头部。

more_set_headers 的一个关键特性是它可以基于响应状态码(例如 -s 404)或内容类型(例如 -t 'text/html')有条件地设置头部。这意味着用户可以根据响应的性质有针对性地修改头部,例如仅在某些错误响应或特定内容类型时添加特定头部。该指令可以在单个语句中接受多个头部定义,从而简化配置流程。

在使用 more_set_headers 时,也可以创建基于 location 或 server 的特定配置,从而在应用的不同部分对头部管理进行精细化控制。对于 API 响应、静态文件传输,或在出于安全、缓存或浏览器兼容性原因需要对头部内容进行精细控制时,这一点尤其有用。

配置示例

location /api {
    more_set_headers 'X-Content-Type-Options: nosniff';
    more_set_headers -s 404 'X-Error: Not Found';
    more_set_headers -t 'application/json' 'Content-Type: application/json';
}

确保要设置的响应头不与现有响应头冲突;冲突可能导致意外行为。

请注意,如果响应已被发送,头部修改将不会生效;请在响应最终确定之前放置该指令。

使用 -s-t 选项时要小心,因为不正确的用法可能会导致头部未按预期设置。

← 返回所有指令