关于Nginx+websocket 400问题

说明

用beego + nginx 在ubuntu上搭建了一个聊天服务器,使用websocket进行聊天交互, 测试没问题,但是放到nginx上之后,访问网站 发现不能进行websocket操作,提示400的问题

解决方法

在nginx配置文件 加上这几句话

map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;

map $http_upgrade $connection_upgrade {
        default upgrade;
        ''  close;
    }
server {
        ...
        location /chat/ {
            proxy_pass http://backend;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
}

原因

since the “Upgrade” is a hop-by-hop header, it is not passed from a client to proxied server. 链接地址
另附 常用的HTTP请求头与响应头

注意:

设置完后 默认有一个连接超时时间60s,相当于我的聊天程序 如果某个人在60s秒内 没有说话 websocket 连接 就会自动断开!

因此 在nginx上需要配置[proxy_read_timeout]

proxy_read_timeout 360s; //6分钟时间

最后reload nginx

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,878评论 24 1,002
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,442评论 19 139
  • 之前在网上搜索到的很多文章在描述 Nginx + Tomcat 启用 HTTPS 支持的时候,都必须在 Nginx...
    Lynner阅读 8,291评论 1 5
  • Welcome to websocket-sharp! websocket-sharp supports: RFC...
    mtian999阅读 13,383评论 0 1
  • Toolbar的初始化 在toolbar 的初始化工程中,我们通常会使用一下方式: 而对于标题的初始化: tool...
    Liuuuuuuzi阅读 4,520评论 0 1