2019-05-17|2019-05-17 realip模块和geoip模块
如何拿到客户端真实的ip地址?
文章图片
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
推荐阅读
- SpringBoot调用公共模块的自定义注解失效的解决
- Node.js中readline模块实现终端输入
- python自定义封装带颜色的logging模块
- 解决SpringBoot引用别的模块无法注入的问题
- Python(pathlib模块)
- Apache多路复用模块(MPMs)介绍
- 依赖注入模块
- python3|python3 模块 包
- 轻量模块注意力机制ECA-Net(注意力模块+一维卷积)
- 模块和包的引入总结