html的软件,seo优化交流,自己开店,广州越秀区美食攻略ngx_http_realip_module模块
realip模块作用#xff1a;当本机的nginx处于反向代理的后端时可以获取到用户的真实ip。可以让accesslog记录用户真实IP地址。
set_real_ip_from IP1;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
set_real_ip_from —— 设置反向代…ngx_http_realip_module模块
realip模块作用当本机的nginx处于反向代理的后端时可以获取到用户的真实ip。可以让accesslog记录用户真实IP地址。
set_real_ip_from IP1;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
set_real_ip_from —— 设置反向代理服务器即信任服务器IPreal_ip_header X-Forwarded-For —— 用户真实IP存在X-Forwarded-For请求头中real_ip_recursive off —— 会将real_ip_header指定的HTTP头中的最后一个IP作为真实IPon —— 会将real_ip_header指定的HTTP头中的最后一个不是信任服务器的IP当成真实IP
参考
http头中的X-Forwarded-For(XFF)和X-Real-IP、Remote Address
XFF位于HTTP请求头是HTTP的扩展header已经是事实上的标准。
X-Forwarded-For用于表示HTTP请求端真实IP。 格式如下
X-Forwarded-For: client, proxy1, proxy2
nginx代理一般配置
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-For $remote_addr; #不合理nginx之前的代理信息都被抹掉
说明 1、X-Forwarded-For最后一节是nginx追加上去的但前面部分来源于nginx收到的请求头这部分内容完全不可信。符合IP格式的才可以使用否则容易引发XSS或者SQL注入漏洞。 2、Remote AddressHTTP协议没有IP的概念Remote Address来自于TCP连接表示与服务端建立TCP连接的设备IP因此Remote Address无法伪造。 3、X-Real-IPHTTP代理用于表示与它产生TCP连接的设备IP可能是其他代理也可能是真正的请求端。
结论 1、直接对外提供服务的web应用在进行与安全有关的操作的时候只能通过Remote Address获取IP不能相信任何请求头。 2、使用nginx等web server进行反向代理的web应用要使用X-Forwarded-For的最后一节或者 X-Real-IP来获取IP同时还应该进行web应用直接对外提供服务。 3、在与安全无关的场景可以通过 X-Forwarded-For的靠前位置获取IP但是需要校验IP的合法性。
更多专业前端知识请上
【猿2048】www.mk2048.com