nginx 在请求头request中增加header参数

nginx 在请求头request中增加header参数,第1张

有两种方式可以实现这一 *** 作:

1:nginx反向代理(需要两个nginx服务)

在nginx反向代理服务器通过使用proxy_set_header实现。

      e.    proxy_set_header X-Forwarded-For 127.0.0.1

2:安装模块Passenger

      [Passenger用户手册] https://github.com/biti/passenger-doc-zh/wiki/Passenger%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8Cnginx%E7%89%88

      安装完成后使用:

      passenger_set_cgi_param HTTP_X_FORWARDED_FOR 127.0.0.1 

      来增加请求header中的参数

应用场景:

1. 切流,一个线上服务,新增了一个功能,需要公网内部测试,这时候可以根据来源ip &path设置不同的header信息,配合业务逻辑实现内外网流量切分,保证内测功能只有内网可见。

2. 使用非标准标头向上游服务器通知用户的IP地址和其他请求属性

nginx代理常用配置项

通过以下的案例来理解proxy_set_header设置

其中backend 192.168.4.122 提前安装nginx 第三方模块支持 ""echo"

=============192.168.4.119 proxy1 nginx.conf

=============192.168.4.120 proxy2 nginx.conf

=============192.168.4.121 proxy3 nginx.conf

=============192.168.4.122 backend nginx.conf

=============

有注意到 ||192.168.4.254, 192.168.4.120 是不包含192.168.4.119

proxy_set_header Host $host

本案例因为不涉及到域名所以用不到$Host值,作用也比较好理解,就是nginx做代理时,把原http请求的Header中的Host字段也放到转发的请求里,如果不加这一行的话,nginx转发的请求header里就不会有Host字段,而服务器是靠这个Host值来区分你的请求的是哪个域名的资源的,

proxy_set_header X-Real-IP $remote_addr

只能获取到与服务器本身直连的上层请求ip 写入到http请求头中

proxy_set_header X-Real-IP $proxy_add_x_forwarded_for

定义客户端IP,如果多层代理都有配置这个值,离backent最近的会覆盖之前的值 所以一般只在连接客户端的代理上写添加这条值,这样backend就能获取到客户端的真实IP,单独使用无效

proxy_set_header X-Forwarded-For $http_x_forwarded_for

把客户端IP写入到http请求头中,前提是之前有X-Real-IP $remote_addr定义过客户端IP,所以单独使用无效

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for

相当于 $http_x_forwarded_for 和 $remote_addr和结合 获取上层IP和把客户端IP写入请求头中,


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11335113.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存