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

发布时间 - 2023-05-13 00:00:00    点击率:

前置条件:需要编译 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;


# nginx  # if  # 继承  # location  # http  # 设置为  # 多个  # 才会  # 自定义  # 时间为  # 用在  # 可以使用  # 则将  # class  # pre 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  Java遍历集合的三种方式  如何为不同团队 ID 动态生成多个独立按钮  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  网站制作企业,网站的banner和导航栏是指什么?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  EditPlus中的正则表达式实战(5)  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  php结合redis实现高并发下的抢购、秒杀功能的实例  如何登录建站主机?访问步骤全解析  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  EditPlus 正则表达式 实战(3)  千库网官网入口推荐 千库网设计创意平台入口  黑客入侵网站服务器的常见手法有哪些?  英语简历制作免费网站推荐,如何将简历翻译成英文?  历史网站制作软件,华为如何找回被删除的网站?  微信小程序 scroll-view组件实现列表页实例代码  如何快速辨别茅台真假?关键步骤解析  CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  香港服务器建站指南:免备案优势与SEO优化技巧全解析  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  googleplay官方入口在哪里_Google Play官方商店快速入口指南  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  jQuery中的100个技巧汇总  Android仿QQ列表左滑删除操作  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  iOS验证手机号的正则表达式  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  如何在服务器上三步完成建站并提升流量?  Laravel怎么上传文件_Laravel图片上传及存储配置  Laravel如何使用Service Container和依赖注入?(代码示例)  Swift中swift中的switch 语句  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  如何在橙子建站上传落地页?操作指南详解  微信小程序 HTTPS报错整理常见问题及解决方案  使用Dockerfile构建java web环境  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  Android GridView 滑动条设置一直显示状态(推荐)  免费视频制作网站,更新又快又好的免费电影网站?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  网站制作价目表怎么做,珍爱网婚介费用多少?  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  如何生成腾讯云建站专用兑换码?