当前位置: 首页 > 编程笔记 >

Nginx 操作响应头信息的实现

赖淇
2023-03-14
本文向大家介绍Nginx 操作响应头信息的实现,包括了Nginx 操作响应头信息的实现的使用技巧和注意事项,需要的朋友参考一下

前置条件:需要编译 ngx_http_headers_module 模块,才支持 header 头信息操作

add_header

意思为将自定义的头信息的添加到响应头,指令为 add_header name value [always];,可以用在 http {}, server {}, location {}, if in location {} 上下文中,
只有当响应状态码等于 200, 201 (1.3.10), 204, 206, 301, 302, 303, 304, 307 (1.1.16, 1.0.13), 或 308 (1.13.0) 时生效,如果 always 参数指定了,头信息将无视状态码,在所有响应中强制返回。

注意: 可以声明多个 add_header 指令,当且仅当 当前区块没有 add_header 的时候,才会继承上级声明的 add_header 信息

例如:

server {
 add_header a 123;

 location / {
  root /path;
 }

 location /download/ {
  add_header b 321;
 }
}

如上的例子,在访问 /download/ 路由的时候,将返回 b 321 这样的头信息,而访问 / 路由时,将返回上级指定的 a 123 头信息。

add_trailer

意思为将自定义的头信息添加到响应头的末尾,指令为 add_trailer name value [always];,可以用在 http {}, server {}, location {}, if in location {} 上下文中,只有当响应状态码等于 200, 201, 206, 301, 302, 303, 307, 或 308 时生效,如果 always 参数指定了,头信息将无视状态码,在所有响应中强制返回。

注意: 可以声明多个 add_trailer 指令,当且仅当 当前区块没有 add_trailer 的时候,才会继承上级声明的 add_trailer 信息

举例参考 add_header 的例子。

expires

启用或禁用,添加或修改响应头中的 "Expires" 和 "Cache-Control" 字段,指令为 expires [modified] time; 或者 expires epoch | max | off; 当响应状态码等于200, 201 (1.3.10), 204, 206, 301, 302, 303, 304, 307 (1.1.16, 1.0.13), 或 308 (1.13.0) 时生效,time 参数可以为正时间或者负时间。"Expires" 字段中的时间计算为当前时间和在 time 中指定的时间总和。如果使用该 modified 参数(0.7.0,0.6.32),则将时间计算为文件修改时间与 time 指令中指定的时间之和。

此外,可以使用 "@" 前缀(0.7.9,0.6.34)指定一天中的时间:expires @15h30m;

"Cache-Control" 字段的内容取决于指定时间的符号:

  • 时间为负数 - "Cache-Control: no-cache"
  • 时间为正数或者0 - "Cache-Control: max-age=t" t 是指令中指定的时间,以秒为单位

epoch 参数将 "Expires" 设置为值 "Thu, 01 Jan 1970 00:00:01 GMT",将"Cache-Control" 设置为 "no-cache"。

max 参数将 "Expires" 设置为值 "Thu, 31 Dec 2037 23:55:55 GMT",将"Cache-Control" 设置为 10 年。

off 参数禁用添加或修改 "Expires" 和 "Cache-Control" 响应头字段。

最后一个参数值可以包含变量(1.7.9): 例如:

map $sent_http_content_type $expires {
 default   off;
 application/pdf 42d;
 ~image/   max;
}

expires $expires;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • HTTP请求头提供了关于请求,响应或者其他的发送实体的信息。 在本章节中我们将具体来介绍HTTP响应头信息。 应答头 说明 Allow 服务器支持哪些请求方法(如GET、POST等)。 Content-Encoding 文档的编码(Encode)方法。只有在解码之后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著地减少HTML文档的下载时间。Java的GZIPOut

  • 我正在学习DNS,并试图理解非递归解析器/服务器如何响应空响应。 我对DNS的理解基本上是: 例如,如果我查询Google的免费DNS服务器(),并要求它解析“google.com”,并且没有设置递归位,则得到的响应是: 所以基本上,除了我的原始查询之外,它什么也没有返回给我,它告诉我递归是可用的。 在这种情况下,查询应该如何进行(假设我们不只是使用ask服务器使用递归)。这里唯一的追索权是联系顶

  • 使用HTTP响应头传递信息是一件非常“酷”的事。但遗憾的是,在传递中文时,会出现乱码问题。其实要解决这个问题也非常简单,只需要对要传输的中文进行编码,然后在接收它们的客户端再对其进行解码即可。 例子 : 用HTTP响应消息头传输中文信息 1. 实例说明 在本程序中通过HTTP响应消息头分别传输英文消息、中文消息和被编码后的中文消息(对中文消息的编码可以采用多种方式,在本例中采用了URL编码的方式,

  • 本文向大家介绍asp.net实现遍历Request的信息操作示例,包括了asp.net实现遍历Request的信息操作示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了asp.net实现遍历Request的信息操作。分享给大家供大家参考,具体如下: #需求: 在服务端获取从客户端发送过来的所有数据信息; #方案: 1、服务端代码 2、使用postman模拟发送数据   1)、query_

  • 我正在尝试修复HP针对此代码的强化扫描返回的“标题操纵”问题。我不知道上传过程中是否已经验证了文件(我想不是)。我尝试使用正则表达式验证文件名,但没有成功。有人能帮我吗? 我所尝试的:

  • 正是头信息开始让 Jekyll 变的很酷。任何只要包含 YAML 头信息的文件在 Jekyll 中都能被当做一个特殊的文件来处理。头信息必须在文件的开始部分,并且需要按照 YAML 的格式写在两行三虚线之间。下面是一个基本的例子: --- layout: post title: Blogging Like a Hacker --- 在这两行的三虚线之间,你可以设置预定义的变量(下面这个例子可以作为