如何让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
相关产品推荐
相关产品推荐

