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

如何让Nginx保留地址栏端口访问Odoo?ISP封禁80/443端口

解决方案:保持Nginx反向代理时的端口不被修改

核心问题是Odoo生成跳转URL时未识别当前请求的8069端口,默认使用被封禁的443端口,同时Nginx的默认配置会自动修正跳转地址。需从Nginx和Odoo两端调整配置:

1. 调整Nginx反向代理配置

修改你的Nginx站点配置文件(通常路径为/etc/nginx/sites-available/erp.example.com),重点配置端口传递和跳转规则:

server {
    listen 8069 ssl;
    server_name erp.example.com;

    # 保留Certbot生成的SSL配置
    ssl_certificate /etc/letsencrypt/live/erp.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/erp.example.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    location / {
        proxy_pass http://localhost:8069;  # 对应Odoo实际监听的端口,按需调整
        # 关键:传递包含端口的请求头给Odoo
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Port $server_port;

        # 禁止Nginx自动修改跳转端口
        proxy_redirect off;
        # 强制跳转时保留8069端口
        proxy_redirect http://$host:$server_port/ https://$host:$server_port/;
    }
}

2. 修改Odoo配置文件(odoo.conf)

找到Odoo配置文件(常见路径/etc/odoo/odoo.conf或~/.odoorc),添加/修改以下参数:

http_port = 8069
proxy_mode = True
web.base.url = https://erp.example.com:8069
web.base.url.freeze = True
  • proxy_mode = True:让Odoo信任反向代理传递的头信息
  • web.base.url:指定外部访问的完整URL(带端口),Odoo生成跳转链接时会直接复用该地址
  • web.base.url.freeze:固定base URL,避免Odoo自动检测修改端口

3. 重启服务生效

执行命令重启Nginx和Odoo:

sudo systemctl restart nginx
sudo systemctl restart odoo

验证效果

现在访问https://erp.example.com:8069,地址栏会保留8069端口,自动跳转到https://erp.example.com:8069/web且不会返回503错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:45:51