nginx配置websocket的wss

开发环境配置websocket踢人操作已实现,可上传到生产环境却出错了, 出错的原因是生产环境使用的是https,报错如下: 百度了半天找到结局方法是websocket也用SSL协议,即wss, html页面上的ws

var ws = new WebSocket('ws://blog.mrabit.com');

需要替换成wss:

var ws = new WebSocket('wss://blog.mrabit.com');

原以为这样就完工了,结果又出现报错: 再次百度....... 可以通http模块实现wss代理,需要修改nginx的代理配置,新增配置:

    location /wss {
       proxy_pass http://127.0.0.1:8088/;
       proxy_read_timeout 60s;
       proxy_set_header Host $host;
       proxy_set_header X-Real_IP $remote_addr;
       proxy_set_header X-Forwarded-for $remote_addr;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection 'Upgrade';
    }

html上的websocket连接需要换成:

var ws = new WebSocket('wss://blog.mrabit.com/wss');

重启nginx,完工

参考地址:

Comments