问题

最近在写博客浏览量的时候,设计了这么一个逻辑:同一个IP浏览一遍文章,5分钟内不刷新次数。就需要在服务器端得到用户的真实IP,我代码是这样写的(从网上找的方法):

public static String getRealIp(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
String unknown = "unknown";
if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}

发现得到的IP总172开头的IP,我查了下是本地局域网的IP,我的项目又是docker布署的,这又记我联想到docker内部的IP。。。

解决办法

最后才发现nginx代理接口的时候,需要做获取IP的配置

location ^~ /api {
proxy_pass http://127.0.0.1:8110/;
proxy_read_timeout 90;
#得到请求真实IP
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect default; }

加上面面的配置,问题解决!

最新文章

  1. Git小技巧 - 指令别名及使用Beyond Compare作为差异比较工具
  2. android.app.Activity阅读摘要,有时候会不会需要保持一些现场数据呢? 想让系统帮你退出到后台或者挂掉前做些前置保持工作吗,重点参考吧:
  3. Rust的几个预测
  4. 【C】——幻方算法
  5. Oracle truncate和delete的区别
  6. javascript笔记3之数据类型
  7. array模块
  8. zepto API参考(~~比较全面)
  9. [WPF]不规则窗体的实现
  10. [RM 状态机详解1] RMApp状态机详解
  11. CSS3之Border-radius
  12. HTML5 CSS3 诱人的实例 : 网页加载进度条的实现,下载进度条等
  13. c# 设置IE浏览器版本运行程序-设置webBrowser对应的IE内核版本来运行
  14. Python面向对象编程(下)
  15. Pytorch 基础
  16. JS---函数名和变量名重名
  17. android多设备界面适配的利器:属性weight的妙用
  18. 在Windows上弄一个redis的docker容器
  19. Some Parameter Interpretation On Using Mininet
  20. Css的向左浮动、先右浮动、绝对定位、相对定位的简单使用

热门文章

  1. 类和对象在JVM中是如何存储的,竟然有一半人回答不上来!
  2. 我画着图,FluentAPI 她自己就生成了
  3. C++如何实现多态
  4. UNP——第三章,套接字编程介绍
  5. Python学习笔记5:模块/包
  6. Python_爬虫伪装_ scrapy中fake_userAgent的使用
  7. Python 自定义模块位置
  8. Avoided redundant navigation to current location: "/users"
  9. window.frames["id"].location使用
  10. 8、Spring Boot任务