美文网首页
关于Nginx+websocket 400问题

关于Nginx+websocket 400问题

作者: cowkeys | 来源:发表于2016-10-29 07:05 被阅读0次

    说明

    用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+websocket 400问题

          本文链接:https://www.haomeiwen.com/subject/mhzeuttx.html