https://juejin.cn/post/7067104289520353310
网络架构:
pc->14.23:7050(nginx)->14.22:8081(nginx)->14.22:8080(web服务)
23 nginx 配置:
| server { |
| listen 7050; |
| |
| location /{ |
| proxy_pass http://xx.xx.14.22:8081/TestServer; |
| proxy_set_header X-Real-PORT $remote_port; |
| proxy_set_header X-Real-IP $remote_addr; |
| proxy_set_header X-Forwarded-For $remote_addr; |
| } |
22 nginx 配置:
| server { |
| listen 8081; |
| listen [::]:8081 ipv6only=on; |
| |
| location / { |
| proxy_set_header Host $host; |
| proxy_http_version 1.1; |
| proxy_set_header Connection ""; |
| proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
| proxy_pass http://xx.xx.14.22:8080; |
| } |
| |
| } |
web 服务请求头参数
| String ips = request.getHeader("X-Forwarded-For"); |
odoo 服务请求头参数设置
| def application(environ, start_response): |
| if config['proxy_mode'] and 'HTTP_X_FORWARDED_HOST' in environ: |
| werkzeug.serving.WSGIRequestHandler.address_string = lambda self: self.headers.get('X-Forwarded-For', self.client_address[0]) |
| return werkzeug.contrib.fixers.ProxyFix(application_unproxied)(environ, start_response) |
| else: |
| return application_unproxied(environ, start_response) |
效果图
会显示两个IP地址,使用逗号隔开


【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)