nginx odoo 多层代理获取真实IP

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地址,使用逗号隔开
image

image

posted @   那时一个人  阅读(98)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示