获取真实客户端ip地址

1.当多台nginx转发服务后,程序想要获取客户端的真实ip地址

$remote_addr:nginx 中的一个变量,为上一层请求来源的 IP 地址

X-Forworded-For请求头:每经过一跳就会将当前ip添加到后面:

例:X-Forwarded-For: 1.1.1.1,2.2.2.2,3.3.3.3,4.4.4.4

  1.1获取x-forwarded-for中图解:

set_real_ip_from:默认为空,可设置为任意 IP 或 IP 段,实例中的 0.0.0.0/0 表示覆盖了所有网段
real_ip_header:默认值是 X-Real-IP,可以设置为任意字符串,一般建议改用 X-Forwarded-For,下面也均以 X-Forwarded-For 为例
real_ip_recursive:默认为 off,可设 on / off 两种值

set_real_ip_from  0.0.0.0/0;
real_ip_header    X-Forwarded-For;
real_ip_recursive  on;

2.nginx中获取真实ip地址:

  2.1只添加某一个路径监听
location ^~/user/ {
  proxy_pass http://10.xx.xx.xx/;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  set_real_ip_from  10.2.0.0;  # 所有授信任的内部节点IP,排除的ip地址
  real_ip_header    X-Forwarded-For;
  real_ip_recursive  on;
}
2.2添加default.conf中全局
  real_ip_header     X-Forwarded-For;
  set_real_ip_from   60.11.11.55; 
  set_real_ip_from   12.24.26.37;  #表示排除 X-Forwarded-For中的两个ip
  real_ip_recursive on;

server {
    listen       80;
    xxx
}

#转发头
location ^~/user/ {
  proxy_pass http://10.xx.xx.xx/;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
 2.3代码中获取x-real-ip请求头即可。
  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值