wss連接錯誤:Error in connection establishment: net::ERR_SSL_PROTOCOL_ERROR


今天項目上線 用到wss協議,然后連接websocket的時候報錯了 如下

Error in connection establishment: net::ERR_SSL_PROTOCOL_ERROR

這是因為我們websocket 連接的域名不支持wss協議

 

項目里我用的是swoole,監聽端口是9501,因為9501的端口不支持ssl,所以我們利用nginx代理來解決這個問題:

 

原理:

wss協議 相當於 https 協議,都在443端口需要ssl證書,我們在nginx配置一個域名提供給websocket專用,

然后監聽該域名的80端口和443端口,做一個反向代理,指導9501端口,這樣就可以實現完整的流程了。

server {
	listen       80;
	server_name  xxx;
	location / {
            proxy_pass http://127.0.0.1:9501;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
    }
}
server {
    listen 443;
    server_name   xxx;
    ssl on;
    ssl_certificate xxx.pem;
    ssl_certificate_key xxx.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
        proxy_connect_timeout 60;
        proxy_send_timeout 60;
        proxy_read_timeout 60;
        proxy_buffer_size 256k;
        proxy_buffers 4 256k;
        proxy_busy_buffers_size 256k;
        proxy_temp_file_write_size 256k;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_404;
        proxy_max_temp_file_size 128m;
        proxy_pass http://127.0.0.1:9501;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }

}

  以上都是自己的見解,有問題可以指出


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM