您的位置:首页技术文章
文章详情页

ssl - websocket请求nginx监听的端口,出现WebSocket opening handshake was canceled

浏览:20日期:2023-08-19 10:40:00

问题描述

nginx版本是1.10.1

nginx配置tcp转发:

tcp{ upstream ge_ssl { server 127.0.0.1:1234; } map $http_upgrade $connection_upgrade{ default upgrade; ’’ close; }server{ listen 9988; ssl on; ssl_certificate /etc/le/l/abc.com/fullchain.pem; ssl_certificate_key /etc/le/l/abc.com/privkey.pem; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { proxy_pass http://ge_ssl; proxy_http_version 1.1; #proxy_ssl_session_reuse off; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; } } }

nginx监听端口:443,80,9988

443:ssl证书 80:rewrite 跳转4439988:该端口为了应对网页的websocket请求,然后将请求转发给1234端口

浏览器:FireFox,Chrome

网页代码:

var ws = new WebSocket(’ws://129.136.145.58:9988’); 在FireFox上面,可以通过,Chrome上面,会出错,错误如下: Mixed Content: The page at ’https://www.abc.com/me’ was loaded over HTTPS, but attempted to connect to the insecure WebSocket endpoint ’ws://129.136.145.58:9988/’. This request has been blocked; this endpoint must be available over WSS. Uncaught SecurityError: Failed to construct ’WebSocket’: An insecure WebSocket connection may not be initiated from a page loaded over HTTPS.所以网页代码改用为var ws = new WebSocket(’wss://129.136.145.58:9988’);这下FireFox和Chrome一起失败了...错误如下: WebSocket connection to ’wss://129.136.145.58:9988/’ failed: WebSocket opening handshake was canceled

查了好多资料都不知道为啥,求大神指点一二,感激不尽。。。

问题解答

回答1:

https和ws不能混用,用http和wss

标签: web