良许Linux教程网 干货合集 nginx获取真实ip,proxy_set_head设置头部信息的方法

nginx获取真实ip,proxy_set_head设置头部信息的方法

Nginx(发音同 engine x)是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个 BSD-like 协议下发行,可以在 UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及 Microsoft Windows 等操作系统中运行。

nginx获取真实ip,proxy_set_head设置头部信息的方法

nginx作为web服务器一个重要的功能就是反向代理。

当然你也可以使用nginx配置正向代理,本是介绍如何配置nginx的反向代理。

nginx反向代理的指令不需要新增额外的模块,默认自带proxy_pass指令,只需要修改配置文件就可以实现反向代理。

$proxy_add_x_forwarded_for
$http_x_forwarded_for

这两个的变量的值的区别,就在于,proxy_add_x_forwarded_for 比http_x_forwarded_for 多了一个的值但是remote_addr 只能获取到与服务器本身直连的上层请求ip,所以设置一般都是设置第一个代理上面但是问题是,有时候是通过访问过来的,那么后面服务器获取到的,永远都是的而非真是用户那么这个时候就要用到了,这个变量的意思,其实就像是链路反追踪,从客户的真实为起点,穿过多层级的,最终到达服务器,都会记录下来,所以在获取用户真实的时候,一般就可以设置成,proxy_add_x_forwarded_for; 这样就能获取所有的代理ip 客户ip。

在打印log 的时候

$http_x_real_ip|$remote_addr

就是 用户的真是ip

配置如下

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

还有一种情况就是,客户在经过cdn请求的时候,本来$proxy_add_x_forwarded_for这里记录的值都全部都包括,但是,当你需要取值的时候,会发现,即便用排除代理ip模块。

set_real_ip_from 100.0.0.0/8;(这里是已知的代理ip)
real_ip_header X-Forwarded-For;
real_ip_recursive on;
X-Forwarded-For

里依然有多个ip,这个时候直接取值$http_x_real_ip 就好了,但是前提条件是,cdn 那边也设置了X-forward,不然,你这边获取的你认为是用户的ip 其实是cdn的ip。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

img
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部