无法通过 wss 连接到服务器

无法通过 wss 连接到服务器

我将下面的 nginx.conf 文件设置为处理 http 和 https。我目前正在使用自签名证书通过 ssl 进行测试。

server {
    listen      80;
    listen      443 ssl;
    server_name  localhost;
    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;

location / {
    proxy_pass http://node:8000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

location /socketcluster/ {
    proxy_pass http://node:8000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
}

当我尝试通过 localhost 连接时,http、https 和 ws:// 似乎工作正常。但是,当客户端尝试通过 wss:// 连接时,我收到以下错误

WebSocket connection to 'wss://localhost:80/socketcluster/' failed: Error in connection establishment: net::ERR_SSL_PROTOCOL_ERROR

我的 nginx 日志显示了这一点 -

nginx       | 172.18.0.1 - - [25/Aug/2016:20:34:51 +0000] "\x16\x03\x01\x00\x7F\x01\x00\x00{\x03\x02\xB0\x80r\xEEH\x8C\x03\xAFFw\x9A4\xC2\x84\xB6\xD9\x9E;|\xDFbD\x1D\xF6)Ai\xB3<C\x13O\x00\x00\x10\xC0" 400 173 "-" "-"
Is there something additional i have to be adding to the nginx conf file to get wss:// to work?

答案1

您的连接是否应该为 443?例如 wss://localhost:443/socketcluster/。

端口 80 未配置为 ssl,因此不会响应 ssl 握手。

同样(如这里)您可以直接调用而不指定端口(默认端口 80 和 443)例如 wss://localhost/socketcluster/。

相关内容