Nginx 中常见 header 配置及修改

这篇具有很好参考价值的文章主要介绍了Nginx 中常见 header 配置及修改。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

Nginx 中常见 header 配置及修改

在 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 等字段

Nginx 中常见 header 配置及修改

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 字段

Nginx 中常见 header 配置及修改

访问查看 response headers

Nginx 中常见 header 配置及修改

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

Nginx 中常见 header 配置及修改

Nginx 中常见 header 配置及修改

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

Nginx 中常见 header 配置及修改

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

Nginx 中常见 header 配置及修改

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

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

Nginx 中常见 header 配置及修改

请求如下:

Nginx 中常见 header 配置及修改

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

Nginx 中常见 header 配置及修改

在 nginx 中设置 proxy_pass_header Server

Nginx 中常见 header 配置及修改

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

Nginx 中常见 header 配置及修改

查看访问结果:

在 nginx 中关闭 proxy_pass_request_headers

Nginx 中常见 header 配置及修改

再次获取访问结果

Nginx 中常见 header 配置及修改

以上就是 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

下载好之后编辑添加

Nginx 中常见 header 配置及修改

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

Nginx 中常见 header 配置及修改

这样 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 模块文章来源地址https://www.toymoban.com/news/detail-451736.html

到了这里,关于Nginx 中常见 header 配置及修改的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nginx修改配置文件不生效

    由于需要向其他公司的数据库中推送数据,但是对方公司的服务器只针对某一台服务器开放了端口,公司的datax部署在另外一台服务器中,导致不能正常连接数据库。因此做了nginx,进行两次代理,但是对方服务器突然出问题,导致更改了数据库的端口,我方公司在进行推送数

    2024年02月12日
    浏览(48)
  • Nginx使用场景&&Nginx基础&&Nginx的负载均衡策略&&Nginx配置文件&&Nginx+Tomcat集群示例&&Nginx部署静态网站&&根据Tomcat容器实际IP修改Nginx配置

    目录 1. Nginx使用场景 2. Nginx中的进程 2.1 Nginx中的多进程模型 2.2 多进程模式的优点: 2.3 缓存 3. Ngnix的负载均衡策略 3.1 轮询法 3.2 加权轮询 3.3 原地址哈希 3.4 最小连接数法 3.5 Fair 3.6 url_hash 3. Nginx配置文件 4. Nginx+tomcat 集群示例 4.1 下载镜像 4.2 在宿主机中创建需要挂载的目录

    2024年02月04日
    浏览(51)
  • 超实用 nginx 中常见的配置合集

    通过 deny 可以封禁指定 IP 需要先禁止 192.168.1.1 开放其他内网网段,然后禁止其他所有 IP 需要在 nginx.conf 中配置转发服务器信息 权重: weight=1 ,权重如果分配的值越大,权重越高 最大连接数: max_fails=3 ,最多连接失败次数为3次 连接失败时间: fail_timeout=20s ,每次连接失败

    2024年02月22日
    浏览(32)
  • Linux中如何修改nginx的nginx.conf配置文件,并刷新生效?

     1、进入nginx的conf目录(按照自己实际的路径来) 2、 可以先查看当前配置文件内容 3、回车查看更多 4、vim进入修改文件 5、修改之后 按 Esc 键退出,输入 :wq 保存退出 6、执行 ./sbin/nginx -t命令测试nginx.conf文件是否合法  7、重启nginx 杀掉进程,重启nginx,实现重启nginx服务

    2024年02月16日
    浏览(41)
  • ansible 修改远程主机nginx配置文件

    设置秘钥   ansible添加主机 ansible测试一下 ping功能 sudo ansible 192.168.1.10 -m ping   测试传送文件到B机 整体目标: 在本机修改好nginx配置文件,并批量更新到目标主机。 分解目标是 1.拷贝文件   2. 重启服务    给所有的目标主机的nginx的配置文件末尾都添加如下: 在ansible的主

    2024年02月12日
    浏览(33)
  • PHP+Nginx经常出现502、504原因与解决方法

    很多新手刚开始做网站可能感觉不到502,504的问题,当等你网站到达了一定水平的时候,流量起来的时候,你会发现经常会遇到502、504类似的问题。 502 Bad Gateway:作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。 将请求提交给网关如php-fpm执

    2024年02月15日
    浏览(37)
  • docker 安装启动 nginx 修改配置资源容器端口

    可以先查看docker下是否存在nginx镜像,使用如下这些命令查看: docker images: 列出所有镜像。 docker images nginx: 列出所有nginx镜像,不同版本等等。 docker search nginx: 搜索查看所有nginx镜像信息。 使用 pull 命令拉取nginx镜像: 出现以下内容,等待下载完成即可: 下载完成nginx镜像后

    2024年02月07日
    浏览(48)
  • Docker部署Nginx并修改配置文件(2种方式)

    1. 进入容器内部修改配置文件 肯定有些童鞋想问,那么上面的配置文件路径是如何得知的? 通过文件查找命令查(按照名称模糊全局查找文件) 因为容器与外界是完全隔离的,使用vim命令请先安装vim 修改完配置,重新加载Nginx 2.容器加载外部配置文件 在外部创建文件夹(用

    2024年04月17日
    浏览(30)
  • Windows系统如何修改Nginx配置实现远程访问多个本地站点

    1. 下载windows版Nginx 进入官方网站(http://nginx.org/en/download.html)下载windows版的nginx 下载好后解压进入nginx目录双击Nginx.exe即可运行 打开浏览器输入http://localhost ,nginx默认使用80端口,所以无需加端口号.出现nginx欢迎页面表示启动成功 2. 配置Nginx 在8086,和9999端口分别配置两个web服务

    2024年01月22日
    浏览(45)
  • nginx proxy_set_header设置、自定义header

    XXX 语法 proxy_set_header field value; 默认值 proxy_set_header Host $proxy_host; proxy_set_header Connection close; 上下文 http, server, location 允许重新定义或者添加发往后端服务器的请求头。value可以包含文本、变量或者它们的组合。 当且仅当当前配置级别中没有定义proxy_set_header指令时,会从上面

    2024年02月03日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包