Nginx中常见header配置及修改

 更新时间:2023年10月10日 15:08:24   作者:Linux运维阿铭  
在nginx中,经常需要因为各种原因,修改header,本文就来介绍一下header配置及修改,具有一定的参考价值,感兴趣的可以了解一下

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

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

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

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

  • add_header
  • add_trailer
  • expires

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

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

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

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

  • proxy_set_header
  • proxy_ignore_headers
  • proxy_pass_header
  • proxy_hide_header
  • proxy_pass_request_headers

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

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

  • X-Accel-Expires
  • Expires
  • Cache-Control
  • Set-Cookie
  • Vary
  • X-Accel-Redirect
  • X-Accel-Limit-Rate
  • X-Accel-Buffering
  • X-Accel-Charset

不过根据测试发现,根本不起任何作用,写了个简单的 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 最常见的几个场景:

  • 通过 add_header 添加允许跨域
  • 通过 header 头,设置缓存生效时间
  • 通过添加自定义 header,做灰度
  • 反向代理,将自定义字段传递到后端,特别 xff 获取真实客户端 IP

除了自带的 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 个指令:

  • more_set_headers 用于添加、修改、清除响应头
  • more_clear_headers 用于清除响应头
  • more_set_input_headers 用于添加、修改、清除请求头
  • more_clear_input_headers 用于清除请求头

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

到此这篇关于Nginx中常见header配置及修改的文章就介绍到这了,更多相关Nginx 常见header配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Nginx常用技巧使用实例汇总

    Nginx常用技巧使用实例汇总

    这篇文章主要介绍了Nginx常用技巧使用实例汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • nginx反向代理服务器及负载均衡服务配置方法

    nginx反向代理服务器及负载均衡服务配置方法

    正向代理一般是在客户端设置代理服务器,通过代理服务器转发请求,最终访问到目标服务器,这篇文章主要介绍了nginx反向代理服务器及负载均衡服务配置方法,需要的朋友可以参考下
    2023-12-12
  • 详解nginx 的 default_server 定义及匹配规则

    详解nginx 的 default_server 定义及匹配规则

    这篇文章主要介绍了详解nginx 的 default_server 定义及匹配规则,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • nginx的安装以及简单配置教程

    nginx的安装以及简单配置教程

    这篇文章主要给大家介绍了关于nginx的安装以及简单配置的相关资料,以下是nginx在各种环境条件下的安装与配置过程,其中还分析了中间遇到的坑以及处理方式,需要的朋友可以参考下
    2023-08-08
  • nginx中(13: Permission denied)权限问题的解决办法

    nginx中(13: Permission denied)权限问题的解决办法

    "nginx 13: Permission denied" 错误通常表示nginx进程没有足够的权限来访问特定的文件或目录,本文就来介绍一下解决方法,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • nginx关于add_header的坑及解决

    nginx关于add_header的坑及解决

    这篇文章主要介绍了nginx关于add_header的坑及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Nginx获取客户端真实IP(real_ip_header)的实现

    Nginx获取客户端真实IP(real_ip_header)的实现

    在使用Nginx作为反向代理时,确保获取客户端真实IP是关键,通过配置real_ip_header和set_real_ip_from,Nginx可以正确解析X-Forwarded-For头部信息,并更新$remote_addr为客户端真实IP,下面就来具体介绍一下
    2024-10-10
  • nginx多https证书配置实现

    nginx多https证书配置实现

    本文主要介绍了nginx多https证书配置实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-04-04
  • Docker Nginx容器和Tomcat容器实现负载均衡与动静分离操作

    Docker Nginx容器和Tomcat容器实现负载均衡与动静分离操作

    这篇文章主要介绍了Docker Nginx容器和Tomcat容器实现负载均衡与动静分离操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Nginx配置location匹配顺序详细总结

    Nginx配置location匹配顺序详细总结

    这篇文章主要介绍了Nginx配置location匹配顺序详解,Nginx是十分轻量级的HTTP服务器,Nginx凭借其稳定性、低资源消耗、简单配置和丰富的功能,从十多年前名不见经传的Web服务器软件,发展到如今能够跟Apache匹敌的地位,需要的朋友可以参考下
    2023-08-08

最新评论