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

Odoo 16通过Nginx代理时LiveChat异常问题求助

问题:Odoo 16 LiveChat在Nginx域名代理下无法实时显示对话

服务器环境:Python 3.8 / Odoo 16 / Nginx,通过域名访问服务。Odoo 16运行在8069端口,gevent端口8072,启动无报错,所有模块运行正常。
症状:通过服务器IP访问时LiveChat功能正常;通过域名访问时,LiveChat仅在右上角通知图标中显示,无法在聊天列表UI实时展示,需刷新页面才会出现。已使用官方推荐Nginx配置,需解决该问题使LiveChat实时正常工作。


1. 当前Nginx配置

#odoo server
upstream odoo {
  server ***.com:8069;
}
upstream odoochat {
  server ***.com:8072;
}
map $http_upgrade $connection_upgrade {
  default upgrade;
  ''      close;
}

# http -> https
server {
  listen 80;
  server_name ***.com;
  rewrite ^(.*) https://$host$1 permanent;
}

server {
  listen 443 ssl;
  server_name ***.com;
  proxy_read_timeout 720s;
  proxy_connect_timeout 720s;
  proxy_send_timeout 720s;

  # SSL parameters
  ssl_certificate /etc/letsencrypt/live/***.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/***.com/privkey.pem;
  ssl_session_timeout 30m;
  ssl_protocols TLSv1.2;
  ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
  ssl_prefer_server_ciphers off;

  # log
  access_log /var/log/nginx/odoo.access.log;
  error_log /var/log/nginx/odoo.error.log;

  # Redirect websocket requests to odoo gevent port
  location /websocket {
    proxy_pass http://odoochat;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    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 / {
    # Add Headers for odoo proxy mode
    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;
    proxy_redirect off;
    proxy_pass http://odoo;
  }

  # common gzip
  gzip_types text/css text/scss text/plain text/xml application/xml application/json application/javascript;
  gzip on;
}

2. 当前Odoo配置

[options]
addons_path = /home/odoo/odoo16/odoo/addons
admin_passwd = $pbkdf2-sha512$25000$FiLEeC/l3HtPiXGuFWLMmQ$TQNFHyiDvf9GmR5s6OFOlCr9L1EJ6.5immyQG3zmqzyXRB38ZswJkqa7.N.yKu.hvx67OUUi9YTvJBmzG075xA
csv_internal_sep = ,
data_dir = /home/odoo/.local/share/Odoo
db_host = False
db_maxconn = 64
db_name = anydb
db_password = False
db_port = False
db_sslmode = prefer
db_template = template0
db_user = False
dbfilter = 
demo = {}
email_from = False
from_filter = False
geoip_database = /usr/share/GeoIP/GeoLite2-City.mmdb
gevent_port = 8072
http_enable = True
http_interface = 
http_port = 8069
import_partial = 
limit_memory_hard = 2684354560
limit_memory_soft = 2147483648
limit_request = 65536
limit_time_cpu = 60
limit_time_real = 120
limit_time_real_cron = -1
list_db = True
log_db = False
log_db_level = warning
log_handler = :INFO
log_level = info
logfile = 
max_cron_threads = 2
osv_memory_age_limit = False
osv_memory_count_limit = 0
pg_path = 
pidfile = 
proxy_mode = True
reportgz = False
screencasts = 
screenshots = /tmp/odoo_tests
server_wide_modules = base,web
smtp_password = False
smtp_port = 25
smtp_server = localhost
smtp_ssl = False
smtp_ssl_certificate_filename = False
smtp_ssl_private_key_filename = False
smtp_user = False
syslog = False
test_enable = False
test_file = 
test_tags = None
transient_age_limit = 1.0
translate_modules = ['all']
unaccent = False
upgrade_path = 
websocket_keep_alive_timeout = 600
websocket_rate_limit_burst = 10
websocket_rate_limit_delay = 0.2
without_demo = True
workers = 0
x_sendfile = False

解决方案

1. 排查WebSocket连接状态

打开浏览器开发者工具(F12),切换到Network标签,过滤ws类型请求:

  • 访问域名后,确认是否存在wss://你的域名/websocket连接,状态是否为101 Switching Protocols
  • 若连接失败或未建立,说明Nginx的WebSocket代理配置存在问题

2. 调整Nginx配置

优化WebSocket上游地址

当前upstream odoochat使用域名指向8072端口,可能存在DNS解析或端口暴露问题,建议直接使用服务器本地IP(如127.0.0.1):

upstream odoochat {
  server 127.0.0.1:8072;
}

完善WebSocket代理参数

在location /websocket块中添加HTTP/1.1协议声明,确保WebSocket握手正常:

location /websocket {
    proxy_pass http://odoochat;
    proxy_http_version 1.1; # 添加此行
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;
    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;
}

3. 确认Odoo代理模式与请求头

Odoo已开启proxy_mode = True,需确保Nginx传递的X-Forwarded-Proto为https,避免Odoo生成ws://协议的WebSocket链接导致混合内容错误。

4. 清除浏览器缓存

域名访问时,浏览器可能缓存旧的WebSocket连接地址,按Ctrl+Shift+R强制刷新页面后重新测试。

5. 检查防火墙/安全组

确保服务器的8072端口仅允许本地Nginx访问(无需暴露到公网),同时公网443端口已开放,保证WebSocket请求能通过Nginx正常转发。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:54:55