2019-05-17 realip模块和geoip模块

如何拿到客户端真实的ip地址?


2019-05-17 realip模块和geoip模块_第1张图片
image.png
server {
    server_name realip.aaa.com;
    set_real_ip_from 122.230.59.111; #定义一个可信的ip地址,也就是客户端真实的ip是这个地址的时候会进行如下操作
    real_ip_header X-Forwarded-For;  #定义请求的头部为X-Forwarded-For
   # real_ip_header X-Real_IP;  #当设置请求的头部为 X-Real_IP时,$remote_addr等于客户端真实的ip
   # real_ip_recursive off;  
   # real_ip_recursive on;  #表示是否开启环回地址,当开启的时候最,如果X-Forwarded-For的最后一个ip和客户端的真实ip一样,则remote_addr返回的是前面的ip地址
   location / {
     return 200 "client real ip:$remote_addr\n"; #$remote_addr是X-Forwarded-For的最后一个ip地址
    }

}
[root@hk conf.d]#nginx -s reload
[root@hk conf.d]#curl -H 'X-Forwarded-For:192.168.1.3,122.230.59.111' realip.zhangdazhi.com
client real ip:122.230.59.111
[root@hk conf.d]#curl -H 'X-Forwarded-For:192.168.1.3,122.230.59.111' realip.zhangdazhi.com
client real ip:192.168.1.3 #当开启环回ip的时候的结果
server {
    server_name realip.zhangdazhi.com;
    set_real_ip_from 122.230.59.111;
  #  real_ip_header X-Forwarded-For;
    real_ip_header X-Real-IP;  #当请求的头部设置为X-Real-IP时$remote_addr为客户端真实的ip地址
   # real_ip_recursive off;
   real_ip_recursive on;
   location / {
     return 200 "client real ip:$remote_addr\n";
    }
}

下载并源码按照ip地址地理信息库
https://dev.maxmind.com/geoip

geoip_country /usr/share/GeoIP/GeoIP.dat;
geoip_city /usr/share/GeoIP/GeoLiteCity.dat;
geoip_proxy 192.168.1.0;   #指明一个可信的地址
geoip_proxy_recursive on;
server {
   server_name geoip.aaa.com;
   location / {
     return 200 '$geoip_country_name\n';
   }
}
 [root@hk conf.d]#curl geoip.aaa.com
China

参考:https://blog.csdn.net/zwmnhao1980/article/details/82267921

你可能感兴趣的:(2019-05-17 realip模块和geoip模块)