详解Nginx服务器中HTTP Headers相关的模块配置使用

ngx_http_headers_module 模块
ngx_http_headers_module 是 Nginx 编译时默认自带的模块,它提供了操作 HTTP 响应头的基础指令,例如add_header 和expires,这些指令对于控制浏览器或 CDN 缓存行为至关重要,影响着网站加载速度及资源的有效管理。
add_header 指令
功能:向 HTTP 响应中添加一个或多个头部行,可用于添加自定义头或覆盖原有头信息。
语法:add_header name value; 或add_header name "value1 value2 ...";
使用环境:http,server,location,if in location
示例:设置所有输出的响应都包含Server 头字段:
add_header Server Apache;
expires 指令
功能:设置Expires 和Cache-Control 响应头字段,用于控制缓存时间。
语法:expires [modified] time;expires epoch | max | off;
默认值:expires off;
参数值:可以是正数、负数或零。

使用环境:http,server,location,if in location
示例:设定资源的缓存时间为 1 小时:
```
expires 1h;
```
ngx_headers_more 模块扩展功能
ngx_headers_more 是 ngx_http_headers_module 的增强版,提供了更多的功能和灵活性,在处理复杂的 HTTP Header 操作时更为高效。
add_trailer 指令
功能:在响应头的末尾添加字段,通常与 HTTP/1.1 分块传输编码一起使用。
语法:add_trailer name value;
使用环境:http,server,location,if in location
示例:在所有响应中添加X-Pad 头字段:
add_trailer X-Pad 0000;

proxy 相关指令
proxy_set_header:设置发往后端服务器的请求头。
proxy_ignore_headers:从后端服务器的响应中忽略指定的头字段。
proxy_pass_header:将后端服务器的指定响应头发送给客户端。
proxy_hide_header:在将后端服务器的响应头发送给客户端之前删除它们。
使用场景:这些指令常用于反向代理配置,以适应不同的网络环境和安全要求。
表格归纳:Nginx 中的 HTTP Headers 指令
| 指令 | 功能 | 使用环境 |
| add_header | 添加或覆盖 HTTP 响应头 | http, server, location, if in location |
| add_trailer | 在响应头末尾添加字段 | http, server, location, if in location |
| expires | 设置缓存过期时间 | http, server, location, if in location |
| proxy_set_header | 设置发往后端服务器的请求头 | server, location |
| proxy_ignore_headers | 忽略来自后端服务器的响应头 | server, location |
| proxy_pass_header | 将后端服务器的响应头发送给客户端(仅在location中使用) | location |
| proxy_hide_header | 在发送给客户端前删除后端服务器的响应头 | server, location |
相关问题与解答
Q1: Nginx中的add_header指令能否用于添加多个头部信息?
A1: 是的,通过使用add_header name "value1 value2 ..."; 语法,可以在一个指令中添加多个头部信息。
Q2: ngx_http_headers_module模块的expires指令如何影响缓存行为?
A2:expires 指令允许设置Expires 和Cache-Control 头字段,定义了资源应该在客户端或中间缓存中缓存多长时间,从而影响缓存行为。