Nginx里Header修改
有时候,我们可能有修改Nginx默认Header的需求。本文就将常见的方法列出来供大家参考。
修改普通请求的Header
Nginx内置的模块暂时仅支持修改响应头,使用add_header。其中:
add_header 来自内置模块ngx_http_headers_module,用于设置response header。参考:http://www.cnblogs.com/linxiong945/p/4174262.html
如果需要设置普通请求的request header,则需要单独安装headers-more-nginx-module模块。该模块提供了more_set_headers,more_set_input_headers分别用于设置请求、响应头。
示例:
location ~ .*\.(php|php5)?$ {
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param LOG_ID $request_id;
    more_set_input_headers "Cookie: name=hello";
    more_set_headers "X-Powered-By:PHP";
    add_header  X-Powered-By2 'PHP';
    include fastcgi.conf;
}
修改反向代理请求的Header
需要使用到proxy_set_header和add_header指令。其中:
proxy_set_header 来自内置模块ngx_http_proxy_module,
用来重定义发往代理服务器服务器的请求头。参考:https://blog.csdn.net/weixin_41585557/article/details/82426784
示例:
location  ^~/test/ {
    proxy_pass http://127.0.0.1:8001$request_uri;
    proxy_set_header host $http_host;
    proxy_set_header x-real-ip $remote_addr;
    proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
}
headers-more-nginx-module 模块
headers-more-nginx-module 模块用于添加、修改或清除 请求/响应头,该模块不是nginx自带的,默认不包含该模块,需要另外安装。
Github地址:https://github.com/openresty/headers-more-nginx-module
安装:
$  wget 'http://nginx.org/download/nginx-1.13.6.tar.gz'
$  tar -xzvf nginx-1.13.6.tar.gz
$  cd nginx-1.13.6/
# 假设Nginx安装在 /opt/nginx/ 目录
$  ./configure --prefix=/opt/nginx \
     --add-module=/path/to/headers-more-nginx-module
$  make -j2
$  make install
从 NGINX 1.9.11 开始,可以使用动态模块加载(生成.so文件,无需重启Nginx整个服务):
$ ./configure --prefix=/opt/nginx \
     --add-dynamic-module=/path/to/headers-more-nginx-module
在Nginx配置文件里加上:
load_module /path/to/modules/ngx_http_headers_more_filter_module.so;
具体安装流程及细节步骤参考:Nginx安装echo模块 https://www.cnblogs.com/52fhy/p/10166333.html 。因为是类似的。
该模块主要有4个指令:
- more_set_headers 用于添加、修改、清除响应头
 - more_clear_headers 用于清除响应头
 - more_set_input_headers 用于添加、修改、清除请求头
 - more_clear_input_headers 用于清除请求头
 
示例:
 # set the Server output header
 more_set_headers 'Server: my-server';
 # set and clear output headers
 location /bar {
     more_set_headers 'X-MyHeader: blah' 'X-MyHeader2: foo';
     more_set_headers -t 'text/plain text/css' 'Content-Type: text/foo';
     more_set_headers -s '400 404 500 503' -s 413 'Foo: Bar';
     more_clear_headers 'Content-Type';
     # your proxy_pass/memcached_pass/or any other config goes here...
 }
 # set output headers
 location /type {
     more_set_headers 'Content-Type: text/plain';
     # ...
 }
 # set input headers
 location /foo {
     set $my_host 'my dog';
     more_set_input_headers 'Host: $my_host';
     more_set_input_headers -t 'text/plain' 'X-Foo: bah';
     # now $host and $http_host have their new values...
     # ...
 }
 # replace input header X-Foo *only* if it already exists
 more_set_input_headers -r 'X-Foo: howdy';
参考
1、【随笔】nginx add_header指令的使用 - linxiong - 博客园
http://www.cnblogs.com/linxiong945/p/4174262.html
2、nginx的headers_more模块的使用 - chunyuan314的博客 - CSDN博客
https://blog.csdn.net/chunyuan314/article/details/81737303
3、关于nginx中proxy_set_header的设置 - 七号空间 - CSDN博客
https://blog.csdn.net/weixin_41585557/article/details/82426784
Nginx里Header修改的更多相关文章
- Nginx通过header转发
		
假设添加自定义头 "my-header",当"my-header"等于test时,转发到192.168.1.113 请求如下 wget --header=&qu ...
 - EF里查看/修改实体的当前值、原始值和数据库值以及重写SaveChanges方法记录实体状态
		
本文目录 查看实体当前.原始和数据库值:DbEntityEntry 查看实体的某个属性值:GetValue<TValue>方法 拷贝DbPropertyValues到实体:ToObject ...
 - chrome http Request Header 修改插件
		
chrome http Request Header 修改插件 2013-05-31 11:03:03| 分类: JavaScript | 标签:chrome extensions chang ...
 - SAP MM MM17里不能修改物料主数据'Purchasing Value Key'字段值?
		
SAP MM MM17里不能修改物料主数据'Purchasing Value Key'字段值? 记得在D项目上线之前数据导入系统之后,业务提出一些物料采购视图里的’Purchasing value k ...
 - Nginx里的root/index/alias/proxy_pass的意思
		
1.[alias] 别名配置,用于访问文件系统,在匹配到location配置的URL路径后,指向[alias]配置的路径.如: location /test/ { alias /home/sftp/i ...
 - .net 4.0 以下HttpWebRequest Header 修改hosts方法
		
.net 4.0 以下HttpWebRequest Header 修改hosts方法 特此记录 public class CusteredHeaderCollection : WebHeaderCol ...
 - docker+nginx 安装部署修改资源目录配置文件和容器端口信息
		
查看docker镜像 可以先查看docker下是否存在nginx镜像,使用如下这些命令查看: docker images: 列出所有镜像. docker images nginx: 列出所有nginx ...
 - 修改Nginx的header伪装服务器
		
有时候为了伪装自己的真实服务器环境.不像让对方知道自己的webserver真实环境,就不得不修改我们的webserer软件了!今天看了一下baidu.com的webserver感觉像是nginx修改的 ...
 - nginx 代理之修改header  的HOST,实现代理转代理
		
现有一个需求,需要从nginx跳转到k8s的traefik代理上,从而实现服务的访问,用于测试.直接修改proxy_set_header的HOST,修改为traefuk代理的域名,proxy_pass ...
 
随机推荐
- MySQL中的latch(闩锁)详解——易产生的问题以及原因分析
			
Latch 什么是latch: 锁是数据库系统区别与文件系统的一个关键特性.锁机制用于管理对共享资源的并发访问.Innodb存储引擎在行级别上对表数据上锁,这固然不错.但是Innodb也会在多个地方使 ...
 - mac 清理
			
1.iOS DeviceSupport -- ~/Library/Developer/Xcode/iOS DeviceSupport 这个可重新生成!在连接旧设备调试时,会重新自动生成. 2.iP ...
 - MUI动态生成轮播图片
			
$$.ajax({ url:'http://localhost:8080/api/v1/food/listFeatureFood', type:'Get', xhrFields: {withCrede ...
 - s6 传输层
			
标题 s6-1 传输层概述(2019-04-06 21:19) s6-2 UDP(2019-04-07 08:39) s6-3 通信模型(2019-04-07 08:47) s6-4 TCP 数据段( ...
 - 你可能不知道的web api
			
简介 作为前端工作者,我们的工作与web是分不开的,随着HTML5的日益壮大,浏览器自带的webapi也随着增多.本篇文章主要选取了几个有趣且有用的webapi进行介绍,分别介绍其用法.用处以及浏览器 ...
 - java性能分析工具
			
jcmd:向JVM发送诊断的命令,jvm未必会全部响应,有些需要在jvm开启相应功能才能响应.个人平时用的不是很多. SampleA: 添加 jcmd pid VM.native_mem ...
 - Navicat连接oracle库报错的处理方法
			
1.oracle客户端版本:11.2.0 64X navicat premium客户端:12.0. 64X 2.安装后,打开连接,输入连接信息,点击保存,提示oracle library is no ...
 - iOS  计算所有标注的经纬度范围 来确定地图显示区域
			
1.计算所有点的经纬度范围 //向点聚合管理类中添加标注 _imageDataArr是存放经纬度标注数组 for (NSInteger i = 0; i < _imageDataArr.coun ...
 - 算法与数据结构(一) 线性表的顺序存储与链式存储(Swift版)
			
温故而知新,在接下来的几篇博客中,将会系统的对数据结构的相关内容进行回顾并总结.数据结构乃编程的基础呢,还是要不时拿出来翻一翻回顾一下.当然数据结构相关博客中我们以Swift语言来实现.因为Swift ...
 - 使用MvvmCross框架实现Xamarin.Forms的汉堡菜单布局
			
注:本文是英文写的,偷懒自动翻译过来了,原文地址:Implementing MasterDetail layout in Xamarin.Forms by MvvmCross 欢迎大家关注我的公众号: ...