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

已部署Let's Encrypt SSL与Nginx,Odoo网站为何无法直接跳转HTTPS?

问题分析与解决方案

1. 修复Nginx配置中的问题

你的当前配置存在两个关键问题:

  • 缺少主域名portoko.com的HTTPS和HTTP重定向配置
  • HTTP监听的server块存在重复判断逻辑,且错误的return 404会阻止正常重定向

替换为以下完整配置:

# 子域名 andy.portoko.com HTTPS配置
server {
    server_name andy.portoko.com;

    # 强制升级不安全请求
    add_header 'Content-Security-Policy' 'upgrade-insecure-requests';

    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;

    # Odoo代理模式所需头部
    proxy_set_header 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;

    # 日志配置
    access_log /var/log/nginx/odoo-andy.access.log;
    error_log /var/log/nginx/odoo-andy.error.log;

    # 转发请求到Odoo后端
    location / {
        proxy_redirect off;
        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;

    client_body_in_file_only clean;
    client_body_buffer_size 32K;
    client_max_body_size 500M;
    sendfile on;
    send_timeout 600s;
    keepalive_timeout 300;

    listen 443 ssl;
    ssl_certificate /etc/letsencrypt/live/portoko.com-0001/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/portoko.com-0001/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

# 主域名 portoko.com HTTPS配置
server {
    server_name portoko.com;

    add_header 'Content-Security-Policy' 'upgrade-insecure-requests';

    proxy_read_timeout 720s;
    proxy_connect_timeout 720s;
    proxy_send_timeout 720s;

    proxy_set_header 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;

    access_log /var/log/nginx/odoo-main.access.log;
    error_log /var/log/nginx/odoo-main.error.log;

    location / {
        proxy_redirect off;
        proxy_pass http://odoo;
    }
    location /longpolling {
        proxy_pass http://odoochat;
    }

    gzip_types text/css text/less text/plain text/xml application/xml application/json application/javascript;
    gzip on;

    client_body_in_file_only clean;
    client_body_buffer_size 32K;
    client_max_body_size 500M;
    sendfile on;
    send_timeout 600s;
    keepalive_timeout 300;

    listen 443 ssl;
    ssl_certificate /etc/letsencrypt/live/portoko.com/fullchain.pem; # 若主域名证书路径不同,请修改为实际路径
    ssl_certificate_key /etc/letsencrypt/live/portoko.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

# HTTP请求统一重定向到HTTPS(包含主域名和子域名)
server {
    listen 80;
    server_name portoko.com andy.portoko.com;

    return 301 https://$host$request_uri;
}

2. 配置Odoo以生成HTTPS链接

Odoo默认可能生成HTTP格式的内部链接,导致页面跳转回HTTP,需修改Odoo配置文件(通常为/etc/odoo/odoo.conf):

# 开启代理模式
proxy_mode = True

# 设置对应域名的base_url,若为同一Odoo实例可配置多个,或依赖反向代理传递的Host
web.base.url = https://portoko.com
# 若子域名对应单独Odoo实例,添加:
# web.base.url = https://andy.portoko.com

3. 生效配置

完成修改后,重启Nginx和Odoo服务:

sudo systemctl restart nginx
sudo systemctl restart odoo

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 11:11:28