odoo 通过nginx反向代理后获取真实IP地址
实操结果:
nginx 配置:
server {
listen 80 ;
listen [::]:80 ;
server_name abc.com;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
location / {
proxy_pass http://localhost:8088/;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 20m;
}
}
那么在odoo中修改 odoo-9.0/openerp/service/wsgi_server.py 的 application 函数,新增此行即可!
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-real-ip', self.client_address[0])
return werkzeug.contrib.fixers.ProxyFix(application_unproxied)(environ, start_response)
else:
return application_unproxied(environ, start_response)
另外外再odoo.conf 文件中要设置值
proxy_mode = True
原文地址:https://blog.csdn.net/J_z10/article/details/52119757
--
更新说明:2021-04-28:
今天使用odoo14版本试了下,不需要改动odoo 的源码,需要修改的事项:
- nginx 配置需要传入真实地址,也就上上方的配置即可。
- odoo 的配置文件需要添加
proxy_mode=True
默认为False
本文来自博客园,作者:那时一个人,转载请注明原文链接:https://www.cnblogs.com/qianxunman/p/12162804.html