今天项目上线 用到wss协议,而后链接websocket的时候报错了 以下nginx
Error in connection establishment: net::ERR_SSL_PROTOCOL_ERRORweb
这是由于咱们websocket 链接的域名不支持wss协议bash
项目里我用的是swoole,监听端口是9501,由于9501的端口不支持ssl,因此咱们利用nginx代理来解决这个问题:websocket
原理:swoole
wss协议 至关于 https 协议,都在443端口须要ssl证书,咱们在nginx配置一个域名提供给websocket专用,session
而后监听该域名的80端口和443端口,作一个反向代理,指导9501端口,这样就能够实现完整的流程了。socket
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"; } }
以上都是本身的看法,有问题能够指出代理