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

最新文章

  1. information_schema系列五(表,触发器,视图,存储过程和函数)
  2. memcached命令行参数说明(转)
  3. CentOS 6.5下Git服务器搭建
  4. 关于block以及__bridge的一些笔记
  5. 20151215jquery学习笔记--jqueryUI --dialog(对话框)
  6. QQ空间API接口
  7. Decorator学习笔记
  8. Vim编辑器与Shell命令脚本
  9. rsync+inotify脚本
  10. 决策树(C4.5)原理
  11. 24. leetcode 409. Longest Palindrome
  12. ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)
  13. CSP201312-4 有趣的数【dp】
  14. LearnOpenGL
  15. PHP7.27: connect mysql 5.7 using new mysqli
  16. C# ConcurrentQueue实现
  17. maven搭建ssm初级框架
  18. ES6 笔记(二)- 总结
  19. C语言 · 上帝造题五分钟
  20. Eclipse去掉对jQuery的错误提示

热门文章

  1. Minimum Barrier Salient Object Detection at 80 FPS 论文阅读笔记
  2. Mysqldump一次备份多个指定数据库
  3. 201871020225-牟星源《面向对象程序设计(java)》第七周学习总结
  4. Lodop打印表格带页头页尾 高度是否包含页头页尾 转载
  5. 03-人脸识别-基于MTCNN,显示5个人脸特征
  6. Java8——Lambda表达式
  7. Python内容
  8. XLA
  9. Apex 中插入更新数据的事件执行顺序
  10. Zabbix的基本功能