nginx + socket.io + ssl:WebSocket连接到'ws://wechat.pageguy.tech/socket.io/?EIO = 3& transport = websocket'失败:意外响应代码:302

时间:2016-10-18 09:11:57

标签: ssl express nginx websocket socket.io

我想使用socket.io通过nginx和ssl配置一个node.js项目,但是我失败了,当我启动它时会出现如下错误:

enter image description here

我花了整整一个中午搜索并阅读文档,但仍然无法弄清楚如何解决这个问题。如果有人遇到过这个问题或对此有任何想法,请帮助我,非常感谢。

这是我的客户端js代码:

let socket = io.connect('//wechat.pageguy.tech/ws', {transports: ['websocket']});

这是nginx代码:

server {
listen       443;
server_name  wechat.pageguy.tech;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header  X-Real-IP  $remote_addr;
#charset koi8-r;
#access_log  /var/log/nginx/log/host.access.log  main;

ssl on;
ssl_certificate /etc/ssl/private/pageguy.crt;
ssl_certificate_key /etc/ssl/private/pageguy.key.unsecure;

location / {
    #root   /usr/share/nginx/html;
    #index  index.html index.htm;
    proxy_pass http://localhost:3335;
}

location /ws/ {
    proxy_pass http://localhost:3005;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_read_timeout 86400;
}
}

我的快递端口是3335,我的socket.io端口是3005.在我在nginx配置文件中添加ssl之前一切都很好。

1 个答案:

答案 0 :(得分:0)

没有人帮我555,但我自己解决了问题。

在客户端js代码:

let socket = io.connect('https//wechat.pageguy.tech/', {transports: ['websocket']});

在nginx配置文件中:

location /socket.io/(not /ws/ because its default value)