WebSocket 结合 Nginx 实现域名及 WSS 协议访问-Nginx配置

特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过。如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/mao2080/

1、基本配置

 1      upstream mqttServer {
 2         server mqttserverip1:8882 weight=1;
 3         server mqttserverip1:8882 weight=1;
 4         #check interval=3000 rise=2 fall=5 timeout=1000;
 5     }
 6     
 7     server {
 8         listen       443 ssl;
 9         server_name  localhost;
10         ssl on; //如果是Linux版本nginx需要配置此项,Windows版本nginx不需要配置
11         ssl_certificate      E:/project/nginx-1.13.6/certfile/pc.crt;
12         ssl_certificate_key  E:/project/nginx-1.13.6/certfile/pc.key;
13         ssl_session_cache    shared:SSL:1m;
14         ssl_session_timeout  5m;
15         ssl_ciphers  HIGH:!aNULL:!MD5;
16         ssl_prefer_server_ciphers  on;
17         location /mqtt {
18             proxy_pass http://mqttServer;
19             proxy_http_version 1.1;
20             proxy_set_header Upgrade $http_upgrade;
21             proxy_set_header Connection "upgrade";
22         }
23     }

2、为什么需要用wss?

Websocket使用 ws 或 wss 的统一资源标志符,类似于 HTTP 或 HTTPS,其中 wss 表示在 TLS 之上的 Websocket ,相当于 HTTPS 了。如:

ws://example.com/chat
wss://example.com/chat

默认情况下,Websocket 的 ws 协议使用 80 端口;运行在TLS之上时,wss 协议默认使用 443 端口。其实说白了,wss 就是 ws 基于 SSL 的安全传输,与 HTTPS 一样样的道理。

如果你的网站是 HTTPS 协议的,那你就不能使用 ws:// 了,浏览器会 block 掉连接,和 HTTPS 下不允许 HTTP 请求一样。

3、注意事项

需要做好CA证书,证书需要写入指定的域名,不然会有问题。

4、参考网站

http://www.cnblogs.com/mafly/p/websocket.html

原文地址:https://www.cnblogs.com/mao2080/p/7772893.html