Nginx反向代理Odoo时HTTPS重定向异常问题求助
解决Odoo通过Nginx反向代理时重定向到odoo/web的问题
你的问题主要出在Nginx域名配置不匹配、重定向规则缺失,以及Odoo未适配反向代理场景这几个点上,以下是具体修复步骤:
1. 修正Nginx的server_name配置
当前443端口的server_name写的是student.zsh.jp,但实际使用的域名是mydomain.com,证书也对应这个域名,这会导致Odoo收到的请求头部异常,进而生成错误的重定向地址。需要把这个值改成mydomain.com。
2. 添加proxy_redirect规则修正重定向地址
Odoo默认会用自身服务名(比如odoo)生成重定向链接,需要让Nginx自动把这个地址替换成你的域名,在location /块里添加对应规则。
3. 修改Odoo配置适配反向代理
编辑Odoo的配置文件(通常为/etc/odoo/odoo.conf),添加或修改以下参数,确保Odoo知晓自己运行在反向代理之后:
proxy_mode = Trueweb.base.url = https://mydomain.com
修正后的完整Nginx配置
upstream odoo { server 127.0.0.1:8069; } upstream odoochat { server 127.0.0.1:8072; } # http -> https server { listen 80; server_name mydomain.com; rewrite ^(.*) https://$host$1 permanent; } server { server_name mydomain.com; # 修正为正确域名 listen 443 ssl http2; # managed by Certbot ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot # log access_log /var/log/nginx/odoo.access.log; error_log /var/log/nginx/odoo.error.log; proxy_read_timeout 720s; proxy_connect_timeout 720s; proxy_send_timeout 720s; proxy_set_header X-Forwarded-Host $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; # Redirect requests to odoo backend server location / { proxy_redirect http://odoo/ https://$host/; # 替换Odoo返回的重定向地址 proxy_pass http://odoo; location /longpolling { proxy_pass http://odoochat; } } # gzip配置移到全局,生效范围更合理 gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript; gzip on; }
最后执行操作
- 执行
nginx -t检查Nginx配置是否合法 - 重载Nginx:
systemctl reload nginx - 重启Odoo服务:
systemctl restart odoo - 清除浏览器缓存后访问
https://mydomain.com,即可正确跳转到https://mydomain.com/web
内容的提问来源于stack exchange,提问作者TennoX
相关产品推荐
相关产品推荐

