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

SpringbBoot nginx代理获取用户真实IP

为了演示多级代理场景,我们分配了以下服务器资源:

  • 10.1.9.98:充当客户端
  • 10.0.3.137:一级代理
  • 10.0.4.105:二级代理
  • 10.0.4.129:三级代理
  • 10.0.4.120:服务器端

各级代理配置

以下是各级代理的基本配置示例(仅展示关键部分):

一级代理(10.0.3.137)配置

server {listen 80;location / {proxy_pass http://10.0.4.105;  # 转发请求到二级代理proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Real-IP $remote_addr;}
}

二级代理(10.0.4.105)配置
与一级代理类似,只是转发目标改为三级代理:

server {listen 80;location / {proxy_pass http://10.0.4.129;  # 转发请求到三级代理proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Real-IP $remote_addr;}
}

三级代理(10.0.4.129)配置
三级代理直接转发请求到服务器端:

server {listen 80;location / {proxy_pass http://10.0.4.120;  # 转发请求到服务器端proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Real-IP $remote_addr;}
}

服务器端(10.0.4.120)配置
服务器端记录客户端的真实IP地址:

server {listen       80;server_name  localhost;charset utf-8;location / {root   /home/ruoyi/projects/ruoyi-ui;try_files $uri $uri/ /index.html;index  index.html index.htm;}location /prod-api/ {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://localhost:8080/;}# springdoc proxylocation ~ ^/v3/api-docs/(.*) {proxy_pass http://localhost:8080/v3/api-docs/$1;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}

在以上配置下,当客户端10.1.9.98发起请求时,X-Forwarded-For头信息包含了客户端10.1.9.98、一级代理10.0.3.137和二级代理10.0.4.105的IP地址。“10.1.9.98, 10.0.3.137, 10.0.4.105”

总结与注意事项

在这里插入图片描述

相关文章:

  • Mac的web服务器
  • Python解释器、REPL与脚本的区别
  • 适用于 iOS 的 开源Ultralytics YOLO:应用程序和 Swift 软件包,用于在您自己的 iOS 应用程序中运行 YOLO
  • 多因子线性回归实战
  • Spark缓存---cache方法
  • 【前端】:单 HTML 去除 Word 批注
  • 【嵌入式开发-软件定时器】
  • nginx 出现大量connect reset by peer
  • 二分查找的边界问题
  • Python训练营打卡——DAY25(2025.5.14)
  • [论文阅读]Formalizing and Benchmarking Prompt Injection Attacks and Defenses
  • MySQL 学习(九)bin log 与 redo log 的区别有哪些,为什么快速恢复使用 redo log 而不用 bin log?
  • 基于javaweb的SpringBoot高校图书馆座位预约系统设计与实现(源码+文档+部署讲解)
  • 深度强化学习 | 图文详细推导软性演员-评论家SAC算法原理
  • html js 原生实现web组件、web公共组件、template模版插槽
  • Go 语言 sqlx 库使用:对 MySQL 增删改查
  • 破解商业综合体清洁管理困局:商业空间AI智能保洁管理系统全场景解决方案
  • 知识图谱重构电商搜索:下一代AI搜索引擎的底层逻辑
  • Flink CDC—实时数据集成框架
  • 【论文笔记】ViT-CoMer
  • 因存在安全隐患,福特公司召回约27.4万辆SUV
  • 公元1058年:柳永词为什么时好时坏?
  • 美政府以拨款为要挟胁迫各州服从移民政策,20个州联合起诉
  • 微软宣布将裁员3%
  • 夜读|尊重生命的棱角
  • 反犹、资金与抗议:特朗普的施压如何撕裂美国大学?|907编辑部