目录$remote_addr代表客户端IP。注意,这里的客户端指的是直接哀求Nginx的客户端,非间接哀求的客户端。假设用户哀求过程如下: [code]用户客户端--发送哀求->Nginx1 --转发哀求-->Nginx2->后端服务器[/code]那么,默认环境下,针对Nginx1而言,[code]$remote_addr[/code]为用户客户端IP,对Nginx2而言,[code]$remote_addr[/code]则为Nginx1的IP。此时如果希望Nginx2也可以获取用户客户端IP,那要怎么处置处罚呢?答案如下: 在Nginx1配置文件中利用[code]proxy_set_header[/code]为转发哀求设置哀求头 [code]proxy_set_header X-Real-IP $remote_addr; // X-Real-IP 为哀求头名称,可自定义 [/code]然后,在Nginx2 配置文件中通过[code]$http_x_real_ip[/code]来获取[code]X-Real-IP[/code]哀求头的值来获取真实客户端IP. 此时,如果要求“后端服务器”也要获取用户客户端IP,咋处置处罚呢?做法和上述雷同,在Nginx2配置文件中,利用[code]proxy_set_header[/code]做同样的配置,即: [code]proxy_set_header X-Real-IP $remote_addr; [/code]然后,“后端服务器”获取哀求头“X-Real-IP”的值即为用户客户端IP。 很多HTTP署剖析在HTTP协议头中添加[code]X-Forwarded-For[/code]头,用来追踪哀求的来源。[code]X-Forwarded-For[/code]的格式如下: [code]X-Forwarded-For[/code]包罗多个IP地址,每个值通过逗号+空格分开,最左边(client1)是最原始客户端的IP地址,中间如果有多层署理,每一层署剖析将连接它的客户端IP追加在[code]X-Forwarded-For[/code]右边。 $proxy_add_x_forwarded_for代表附加[code]$remote_addr[/code]变量的客户端哀求头[code]X-Forwarded-For[/code] ,其值如果包罗多个地址,用逗号+空格分隔,标准格式如下: [code]X-Forwarded-For: clientIP, proxyIP1, proxyIP2 # 最左边的clientIp即为客户端真实IP [/code]如果[code]X-Forwarded-For[/code]字段没出如今客户端哀求头,[code]$proxy_add_x_forwarded_for[/code] 等同于[code]$remote_addr[/code] 变量。 这里,假设用户哀求过程和上文所述一样,如下: [code]用户客户端--发送哀求->Nginx1 --转发哀求-->Nginx2->后端服务器[/code]假设,仅在Nginx1配置文件中举行了以下配置 [code]proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; [/code]那么,Nginx2配置的[code]X-Forwarded-For[/code]哀求头的值即为[code]clientIP[/code],当然,这个结论的条件是,客户端IP没有配置X-Forwarded-For哀求头,由于如上所述,客户端没有出现这个哀求头时,$proxy_add_x_forwarded_for 的值即为$remote_addr 变量的值,否则,则是客户端为X-forwarded-for哀求头的实际值。 接着,假设Nginx2配置文件也举行以下配置 [code]proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; [/code]那么,“后端服务器”获取的[code]X-Forwarded-For[/code]哀求头的值将为[code]clientIP, Nginx1IP[/code]。也就是说以上下令的实验是个叠加的过程(雷同Python的列表的[code]append[/code]方法的处置处罚过程),可以简朴明白为如果存在上级署理,实验以上下令时,会把上级署理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_forwarded_for 到此这篇关于Nginx $remote_addr和$proxy_add_x_forwarded_for变量的实现的文章就介绍到这了,更多相干Nginx $remote_addr和$proxy_add_x_forwarded_for 内容请搜索脚本之家从前的文章或继承浏览下面的相干文章希望各人以后多多支持脚本之家! 来源:https://www.jb51.net/server/3262802e1.htm 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|手机版|小黑屋|梦想之都-俊月星空
( 粤ICP备18056059号 )|网站地图
GMT+8, 2025-7-1 18:51 , Processed in 0.031094 second(s), 18 queries .
Powered by Mxzdjyxk! X3.5
© 2001-2025 Discuz! Team.