通过Nginx获取用户真实IP
2024-08-27 20:05:46
nginx配置
location / {
proxy_set_header Host $host;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
如上面配置,接口需要使用的时候获取X-real-ip就可以,但是经过测试以后,发现X-real-ip并不是真实的用户IP,而是Nginx代理服务器的IP,原因就是经过多级代理,$remote_addr是上一级的IP。
名词解释
- $remote_addr
获取到上一级代理的IP - proxy_add_x_forwarded_for
- 获取到结果例如:(223.104.6.125, 10.10.10.45),第一个是用户的真实IP,第二个是一级代理的IP,依此类
通过上面的分析我们可以从proxy_add_x_forwarded_for中获取到用户的真实IP,使用正则匹配获取第一个即可,如下:
location / {
proxy_set_header Host $host;
set $Real $proxy_add_x_forwarded_for;
if ( $Real ~ (\d+)\.(\d+)\.(\d+)\.(\d+),(.*) ){
set $Real $.$.$.$;
}
proxy_set_header X-real-ip $Real;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
也可以通过后台的程序,从请求的header里获取X-Forwarded-For,然后取起一个值即可
嗯,就酱~~
参考:https://blog.csdn.net/qq_28796345/article/details/88685245
最新文章
- information_schema系列五(表,触发器,视图,存储过程和函数)
- memcached命令行参数说明(转)
- CentOS 6.5下Git服务器搭建
- 关于block以及__bridge的一些笔记
- 20151215jquery学习笔记--jqueryUI --dialog(对话框)
- QQ空间API接口
- Decorator学习笔记
- Vim编辑器与Shell命令脚本
- rsync+inotify脚本
- 决策树(C4.5)原理
- 24. leetcode 409. Longest Palindrome
- ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)
- CSP201312-4 有趣的数【dp】
- LearnOpenGL
- PHP7.27: connect mysql 5.7 using new mysqli
- C# ConcurrentQueue实现
- maven搭建ssm初级框架
- ES6 笔记(二)- 总结
- C语言 · 上帝造题五分钟
- Eclipse去掉对jQuery的错误提示