odoo.addons.bus.websocket: 400 Bad Request: Empty or missing header(s): upgrade (使用nginx配置WebSocket)

4 篇文章 0 订阅
文章讲述了在Odoo部署Nginx后遇到附件上传问题,原因是proxy_set_headerUpgrade和Connection默认不转发。解决方法是安装相关Nginx模块,配置WebSocket支持,指定升级协议和调整文件上传限制。
摘要由CSDN通过智能技术生成

odoo部署了Nginx后附件没办法上传,报错:

odoo.addons.bus.websocket: 400 Bad Request: Empty or missing header(s): upgrade

究其原因:proxy_set_header Upgrade、proxy_set_header Connection 默认是不会自动转发的,需要在配置文件中增加流量转发处理。

如何在nginx中启用WebSocket?

要启用WebSocket,我们必须在Nginx上配置WebSocket模块。这可以通过安装含有ngx_http_upstream_module和ngx_http_proxy_module的Nginx包来实现。

  1. 安装ngx_http_upstream_module和ngx_http_proxy_module模块
$ sudo apt-get update
$ sudo apt-get install nginx-extras
  1. 配置Nginx虚拟主机
    在Nginx的配置文件中,我们配置一个包含selectors元素的upstream定义,其中包含一个我们想要代理的服务器列表。以下是一个基本的WebSocket启用Nginx虚拟主机的示例:
upstream websocket {
    server localhost:8069;
}

server {
    listen      80;
    server_name domain.com;

    location / {
        proxy_pass http://websocket;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;   # 启用支持websocker连接
        proxy_set_header Connection "upgrade";	  # 启用支持websocker连接
        client_max_body_size 20m;	# 控制文件上传大小,本例:20M
    }
}

在上面的配置中,我们指定了WebSocket服务器的服务器名称和端口号,并设置了代理_pass语句以重定向所有流量。我们还指定了一个proxy_set_header命令,以通过升级HTTP版本升级协议,而不是使用HTTP1.0或HTTP1.1。

  1. 重启和测试Nginx
    完成配置后,请使用以下命令检查Nginx:
$ sudo nginx -t

如果测试通过,可以重启Nginx:

$ sudo service nginx restart

现在WebSocket可以通过Nginx进行代理了。

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值