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

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

2019-05-17|2019-05-17 realip模块和geoip模块
文章图片
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

【2019-05-17|2019-05-17 realip模块和geoip模块】参考:https://blog.csdn.net/zwmnhao1980/article/details/82267921

    推荐阅读