请教:nginx反向链接wss报错:Error during WebSocket handshake: Unexpected response code: 200

bnbnyu

按照官方文档的示例,配置了nginx的wss反向链接。如下:

server{
    listen 443;
    listen :443;
    server_name  c.officedog.cn;
    root /alidata/www/cd;

    ssl on;
    ssl_certificate   /etc/nginx/cert/214354783860444.pem;
    ssl_certificate_key  /etc/nginx/cert/214354783860444.key;
    ssl_session_timeout 5m;  
    #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  
    #ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_session_cache shared:SSL:50m;
    ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4 RSA: HIGH: MEDIUM: LOW: SSLv2: EXP;
    ssl_prefer_server_ciphers on;

    location /wss/ {
        proxy_pass http://120.24.64.45:8282/;  指向服务器socket服务器
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-real-ip $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
    }

    if ($scheme = http) {
        return 301 https://$server_name$request_uri;
    }

   #其他略

其中,http://120.24.64.45:8282/ 指向socket服务器。

protected $socket = 'websocket://120.24.64.45:8282';

测试一:客户端直接访问 ws://域名:8282 ,能否正常访问。
测试二:客户端访问 wss://域名 ,由nginx反向链接 ws://域名:8282 ,就报错了。报错内容如下:

WebSocket connection to 'wss://c.officedog.cn/' failed: Error during WebSocket handshake: Unexpected response code: 200

环境,阿里云CentOS7,PHP7,nginx。

31286 1 0
1个回答

抽不完的寂寞

看起来客户端要访问 wss://c.officedog.cn/wss/ 才对吧

  • bnbnyu 2017-11-26

    十分感谢,对nginx配置的基础不牢靠,按照你所说的,已经成功了。

  • 抽不完的寂寞 2017-12-01

    不客气,我也是猜的

  • sds4656 2018-04-10

    @3092:能发下你的配置文件给我吗?

  • ritsuyan 2018-12-30

    @2710:哥们 太感谢你了

  • wdujuan25 2019-03-02

    请问一下,改成wss://c.officedog.cn/wss/这种形式之后依然不行,还有什么别的解决方案吗?

年代过于久远,无法发表回答
🔝