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

Google Cloud上Odoo的Nginx反向代理间歇性404错误排查求助

解决Google Cloud上Odoo+Nginx反向代理间歇性404错误

问题根源分析

从现象(清浏览器缓存临时恢复、error.log无内容)来看,核心问题集中在Nginx配置错误、浏览器缓存策略缺失以及Odoo代理模式未启用这几个方面,其中域名拼写错误是最容易被忽略的硬伤。

具体修复步骤

1. 修正Nginx配置中的域名拼写错误

检查你的Nginx配置文件,发现server_name字段写成了my_domaine_name.com,但实际域名是my_domain_name.com(少了一个字母i)。这个错误会导致Nginx无法匹配到正确的server块,请求可能被转发到默认服务器,从而出现间歇性404。

修改配置:

server {
    listen 80;
    server_name my_domain_name.com;  # 修正域名拼写
    # 其余配置保持不变
}

修改后重启Nginx:

sudo systemctl restart nginx

2. 添加缓存控制规则,避免浏览器缓存过期资源

浏览器缓存旧的静态资源路径是间歇性404的常见诱因,需要给静态资源设置合理缓存期,同时禁止动态内容缓存:

server {
    # 原有配置...

    # 针对静态资源设置缓存
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        proxy_pass http://odoo;
        expires 1d;  # 静态资源缓存1天
        add_header Cache-Control "public, no-transform";
    }

    # 动态内容禁止缓存
    location / {
        proxy_pass http://odoo;
        add_header Cache-Control "no-cache, no-store, must-revalidate";
        add_header Pragma "no-cache";
        add_header Expires "0";
    }

    # longpolling配置保持不变
    location /longpolling {
        proxy_pass http://odootchat;
    }
}

3. 调整Nginx日志级别,获取诊断信息

默认的error.log级别仅记录严重错误,无法捕捉404相关细节。修改日志级别为warn,同时通过access.log追踪404请求:

server {
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log warn;  # 提升日志级别
    # 其余配置...
}

实时查看404请求:

tail -f /var/log/nginx/access.log | grep "404"

4. 启用Odoo的代理模式并更新静态资源

Odoo在反向代理环境下需要启用proxy_mode,否则可能生成错误的资源路径:

  1. 编辑Odoo配置文件(通常是/etc/odoo/odoo.conf),添加:
    proxy_mode = True
    
  2. 重启Odoo服务:
    sudo systemctl restart odoo
    
  3. 更新Odoo静态资源,确保资源路径正确:
    sudo -u odoo /usr/bin/odoo-bin --addons-path=/usr/lib/python3/dist-packages/odoo/addons,/var/lib/odoo/addons --update=web
    
    (路径根据你的实际部署调整)

验证

完成上述修改后,清除浏览器缓存,持续测试系统运行状态,观察是否还会出现间歇性404错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 20:55:31