文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Nginx 中常见 header 配置及修改

2023-08-31 07:19

关注

在 nginx 中,经常需要因为各种原因,修改 header,所以今天整理下 nginx 中 header 的一些指令

header 是 http 中的消息头,里面包含很多信息,通常又分为 request headers(请求头)和 response headers(响应头)

客户端向服务器发送的请求中包含请求头,服务器向客户端回复的响应中包含响应头,消息头通常是以冒号分隔的键值对

在 nginx 中有 headers 模块,其中有三条指令,分别是:

expires 就不用多说了,用来控制缓存时间的,证书就是缓存的时间,0 或负数就是缓存无效

add_trailer 和 add_header 一样的效果,都是在 headers 中添加字段,不过 trailer 是添加到响应头的末尾

nginx 中通常就通过这三个控制 response 的 headers 信息

另外涉及到 headers 修改的指令,通常是在反向代理的时候,也就是 proxy_pass 的时候,有以下几个指令可以操作 header

proxy_set_header 通常用的最多,可以在提交给上游服务器的 header 中添加或重写 header,比如通常用到的,反向代理的时候,添加客户端 IP、XFF 等字段

proxy_ignore_headers 通常用来禁用上游服务器的某些响应字段,如:

不过根据测试发现,根本不起任何作用,写了个简单的 php 脚本,用 proxy_pass 代理,在 php 中用 header 写 Expires 字段

访问查看 response headers

接着,用 proxy_ignore_headers 忽略掉 Expires 字段,再次请求看下效果

没有任何效果,开始以为是在 php 中写不行,写到上游 nginx 配置中尝试

访问测试,仍然没有忽略掉

生效的,仍然是后端的 expires,从官方以及网上看到的文章,我理解,都是忽略上游设置的 Expires

不过 proxy_hide_header 可以将上游响应中的 header 中的字段忽略掉

请求如下:

proxy_pass_header 正好和 proxy_hide_header 相反,有些 header 字段 nginx 默认不会响应到代理,nginx 官方文档中举例说 Date、Server、X-Pad、X-Accel 等字段,测试,同样在 php 中设置 Server

在 nginx 中设置 proxy_pass_header Server

proxy_pass_request_headers 则是控制客户端 request 的 header,是否传递到上游服务器,默认是开启的,也就是客户端请求携带的 header,都会被转发到上游服务器,还是拿 php 脚本来获取 request_header 信息

查看访问结果:

在 nginx 中关闭 proxy_pass_request_headers

再次获取访问结果

以上就是 nginx 自带的调整,设置 header 的一些指令,通常调整 header 最常见的几个场景:

除了自带的 headers 模块,也可以安装第三方的 headers-more 模块,对应 headers 的控制更全面,更方便,headers-more 是 openresty 的一个模块,openresty 就自带了,nginx 的话,需要编译添加动态模块

headers-more 模块下载地址:GitHub - openresty/headers-more-nginx-module: Set, add, and clear arbitrary output headers in NGINX http servers

下载好之后编辑添加

通过 make modules,编译动态模块文件,生成在 objs 目录下,将.so 文件复制到 modules 目录下,在 nginx 配置文件中通过 load_modules 加载

这样 headers-more 模块就添加好了

该模块主要有 4 个指令:

headers-more 相比 nginx 自带的 headers,处理 headers 更方便,更灵活,所以,如果有 nginx 自带 headers 模块满足不了的需求,可以添加 headers-more 模块

来源地址:https://blog.csdn.net/am_Linux/article/details/130070403

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯