Nginx $remoteaddr和$proxyaddxforwardedfor变量详解

技术Nginx $remoteaddr和$proxyaddxforwardedfor变量详解 Nginx $remote_addr和$proxy_add_x_forwarded_for变量详解$re

变量Nginx $remote_addr和$ proxy _ add _ x _ forwarded _ for的详细说明。

$remote_addr

代表客户端IP。注意这里的客户端指的是直接请求nginx的客户端,而不是间接请求Nginx的客户端。假设用户请求过程如下:

客户端-发送请求-nginx 1-转发请求-nginx 2-后端服务器。

那么,默认情况下,$remote_addr是Nginx1的用户客户端的IP,$remote_addr是Nginx2的Nginx1的IP。这时,如果想让Nginx2也获得用户客户端的IP,应该怎么做?答案如下:

使用Nginx1配置文件中的proxy_set_header为转发请求设置请求头。

proxy _ set _ header X-Real-IP $ remote _ addr;//X-Real-IP是请求头的名称,可以自定义。

然后,在Nginx2配置文件中,通过$http_x_real_ip获取X-Real-IP请求头的值,得到真实的客户端IP。

这时,如果要求“后端服务器”也获取用户客户端的IP,应该怎么做和上面类似?在Nginx2配置文件中,proxy_set_header用于相同的配置,即:

proxy _ set _ header X-Real-IP $ remote _ addr;

然后,“后端服务器”获取请求头“X-Real-IP”的值,即用户客户端IP。

许多HTTP代理会在HTTP协议头中添加一个X-forward-For头来跟踪请求的来源。转发的格式如下:

x-forward-For包含多个IP地址,每个值用逗号分隔,最左边的(client1)是原始客户端的IP地址。如果中间有多层代理,每层代理会将与其连接的客户端的IP追加到X-Forwarded-For的右侧。

$proxy_add_x_forwarded_for

附加了代表变量$remote_addr的客户端请求头X-forward-For。如果其值包含多个地址,则用逗号分隔。标准格式如下:

x-forward-对于: clientIp,proxyinp1,proxyinp2 #最左边的clientIp是客户端的真实Ip。

如果客户端请求头中没有出现“转发”字段,$ proxy _ add _ x _ forwarded _ for相当于$remote_addr变量。

这里,假设用户请求过程与上述相同,如下所示:

客户端-发送请求-nginx 1-转发请求-nginx 2-后端服务器。

假设在Nginx1配置文件中只进行了以下配置。

proxy _ set _ header _ X-forward-For $ proxy _ add _ X _ forward _ For;

然后,由Nginx2配置的X-forward-For请求头的值是clientIP,当然,这个结论的前提是,客户端IP没有配置X-Forwarded-For请求头,因为如上所述,客户端没有出现这个请求头时,$proxy_add_x_forwarded_for 的值即为$remote_addr 变量的值,否则,则是客户端为X-forwarded-for请求头的实际值.

接下来,假设Nginx2配置文件也配置如下。

proxy _ set _ header _ X-forward-For $ proxy _ add _ X _ forward _ For;

然后,由“后端服务器”获得的X-forward-For请求头的值将是clientIP,Nginx1IP。也就是说,上述命令的执行是一个叠加的过程(类似于Python列表append方法的处理过程),可以简单理解为如果存在上级代理,执行以上命令时,会把上级代理IP追加到X-Forwarded-For请求头总,否则把客户端IP $remote_addr、或者客户端X-Forwarded-For请求头的值(如果有的话)追加到X-Forwarded-For请求头中。.

参考连接:

https://nginx . org/en/docs/http/ngx _ http _ core _ module . html # var _ remote _ addr

https://nginx . org/en/docs/http/ngx _ http _ proxy _ module . html # var _ proxy _ add _ x _ forward _ for

作者:客串。

QQ:1033553122

全国软件测试QQ交流群:7156436。

Git地址:https://gitee.com/ishouke.

友情提示:由于时间短,文字可能有错误。请指正和评论!

作者缺钱。如果你觉得文章对你有帮助,请扫描下面的二维码奖励作者。金额是免费的。你的支持将是我继续创作的源泉。奖励后如有任何问题,请联系我!

微信奖励。

支付宝奖励全国软件测试交流QQ群。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/70042.html

(0)

相关推荐

  • 被动语态的结构,被动语态的结构式是什么

    技术被动语态的结构,被动语态的结构式是什么被动语态(一般现在时) 主动语态变被动语态时,主动语态句中的宾语变成被动语态句中的主语,主动语态句中的主语成为被动语态句中的动作的发出者被动语态的结构。 被动语态的口诀 一般现、

    生活 2021年10月29日
  • php编译iconv错误的解决方法是什么

    技术php编译iconv错误的解决方法是什么这篇文章主要介绍“php编译iconv错误的解决方法是什么”,在日常操作中,相信很多人在php编译iconv错误的解决方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好

    攻略 2021年11月8日
  • 复杂的英语,高中英语复杂句子成分分析例句

    技术复杂的英语,高中英语复杂句子成分分析例句并列句中两个分句又内含从句的话,那就成为一种更加复杂的并列复合句复杂的英语。例句:While the men worked to stregthen the dam ,the

    生活 2021年10月20日
  • Java Spring Boot怎样彻底解决SSM配置问题

    技术Java Spring Boot怎样彻底解决SSM配置问题Java Spring Boot怎样彻底解决SSM配置问题,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来

    攻略 2021年10月31日
  • 抖音播放量怎么提升,如何刷抖音播放量?

    技术抖音播放量怎么提升,如何刷抖音播放量?自己是否上了热门,抖音并不会特别的对我们进行通知,所以大家唯一能看出自己上了热门的方法就是看关注、点赞、留言的数量,一般来说上了热门以后,这些数据就会进行一个快速的更新。很多人都

    测评 2021年10月20日
  • 抖音刷赞网址,点击最好的刷抖音点赞平台!

    技术抖音刷赞网址,点击最好的刷抖音点赞平台!在别的平台刷粉,我不知道有什么好处。但是我知道在英才代刷网下单的粉丝质量很高,都是有正常头像和名字的,而且一大部分粉丝是有作品的,质量差不多赶上活人的了。刷粉可以增加账号的活跃

    测评 2021年10月20日