当前位置: 首页 > news >正文

nginx如何获取真实的ip

我这里使用是springboot项目,使用nginx做代理,但header里面的参数没有将ip带过来,所有需要配置nginx将ip带过来。

nginx.conf文件


server {listen       80;listen       443 ssl;server_name  xxx.xxx.com;ssl_certificate  /web/project/ai-master/ssl/xxx.xxx.com_bundle.pem;ssl_certificate_key  /web/project/ai-master/ssl/xxx.xxx.com.top.key;#接口location /api {#保留代理之前的host 包含客户端真实的域名和端口号proxy_set_header    Host  $host;#保留代理之前的真实客户端ipproxy_set_header    X-Real-IP  $remote_addr;#这个Header和X-Real-IP类似,但它在多级代理时会包含真实客户端及中间每个代理服务器的IPproxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;#表示客户端真实的协议(http还是https)proxy_set_header X-Forwarded-Proto $scheme;proxy_pass http://aiMasterServer/api;}}

RequestUtil.java文件


/*** @Description:请求处理类* @author: Adobe Chow* @date: 2019/4/25 10:42* @Copyright: www.winshang.com Inc. All rights reserved.*/
public class RequestUtil {public static HttpServletRequest getRequest(){HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();return request;}public static HttpServletResponse getResponse(){HttpServletResponse response = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getResponse();return response;}/**** 获取客户端IP地址;这里通过了Nginx获取;X-Real-IP,* @return*/public static String getClientIP() {HttpServletRequest request = getRequest();String ip = request.getHeader("X-Real-IP");if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("X-Forwarded-For");}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.getRemoteAddr();}return ip;}
}

http://www.lryc.cn/news/124454.html

相关文章:

  • kotlin + LiveData 测试
  • 【dnf5文档】新一代RedHat自动化包管理器
  • 数据可视化工具的三大类报表制作流程分享
  • lua使用心得
  • Docker升级后,出现Error response from daemon: Unknown runtime specified docker-runc
  • [Poetize6] IncDec Sequence
  • 通过Microsoft Loopback Adapter实现虚拟机和物理机的通信
  • 算法leetcode|70. 爬楼梯(rust重拳出击)
  • 基于epoll的TCP服务器端(C++)
  • 实时安全分析监控加强网络安全
  • 基于ipad协议的gewe框架进行微信群组管理(二)
  • 大数据-玩转数据-Flink网页埋点PV统计
  • 什么是伪类选择器?
  • PLY模型格式详解【3D】
  • Java的反射机制、Lambda表达式和枚举
  • 数据结构:堆的实现
  • zabbix-6.4 监控 MySQL
  • 深入探索:解读创意的力量——idea的下载、初步使用
  • Redis详解
  • 【Linux】高级IO
  • 动态HTTP代理与竞争情报收集的关联
  • kafka基本概念及操作
  • 分享个试卷去笔迹什么软件,几个步骤轻松擦除
  • ClickHouse(十八):Clickhouse Integration系列表引擎
  • 日常BUG——代码提交到了本地但是没有push,删除了本地分支如何恢复
  • Markdown语法
  • vue3表格,编辑案例
  • SQL Server Reporting Services 报错:报表服务器无法访问服务帐户的私钥
  • QT报表Limereport v1.5.35编译及使用
  • 互联网发展历程:从中继器口不够到集线器的引入