You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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 = True
  • web.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;
}

最后执行操作

  1. 执行nginx -t检查Nginx配置是否合法
  2. 重载Nginx:systemctl reload nginx
  3. 重启Odoo服务:systemctl restart odoo
  4. 清除浏览器缓存后访问https://mydomain.com,即可正确跳转到https://mydomain.com/web

内容的提问来源于stack exchange,提问作者TennoX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 04:53:13