WebSocket使用Nginx反向代理解决Wss服务问题

您所在的位置:网站首页 nginx反向代理配置过程 WebSocket使用Nginx反向代理解决Wss服务问题

WebSocket使用Nginx反向代理解决Wss服务问题

2024-07-17 00:40| 来源: 网络整理| 查看: 265

WebSocket 可以减小客户端与服务器端建立连接的次数,减小系统资源开销,只需要一次 HTTP 握手,整个通讯过程是建立在一次连接/状态中,也就避免了 HTTP 的非状态性,服务端会一直与客户端保持连接,直到你关闭请求,同时由原本的客户端主动询问,转换为服务器有信息的时候推送

大多数用它还来做实时通信的功能,我们可以使用 Swoole 的 WebSocket\Server 来作为服务端

客户端的话,支持就很多了,比如 Chrome/Firefox/高版本 IE/Safari 等浏览器内置了 JS 语言的 WebSocket 客户端、微信小程序开发框架内置的 WebSocket 客户端、异步的 PHP 程序中可以使用 Swoole\Http\Client 作为 WebSocket 客户端等等

ws 和 wss 是什么?有什么区别

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

默认情况下,Websocket 的 ws 协议使用 80 端口,wss 协议默认使用 443 端口

这篇文章我们来看一下如何使用 Nginx 反向代理来解决 WebSocket 的 wss 服务问题,即客户端通过 Wss 协议连接 Nginx 然后 Nginx 通过 Ws 协议和 Server 通讯

也就是说 Nginx 负责通讯加解密,Nginx 到 Server 是明文的,Swoole 不用开启 ssl,而且还能隐藏服务器端口和负载均衡

配置 Nginx代码语言:javascript复制server { #下面这个部分和正常配置 https 没有什么区别 listen 443; server_name 域名; ssl on; #申请域名对应的证书 ssl_certificate 你的证书.crt; ssl_certificate_key 你的密匙.key; ssl_session_timeout 5m; ssl_session_cache shared:SSL:10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; ssl_verify_client off; #反向代理 需要把后续.php 相关的和重写 index.php 的部分删除 location / { proxy_redirect off; proxy_pass http://127.0.0.1:9501; #转发到你本地的 9501 端口 对应 ws 的端口 proxy_set_header Host $host; proxy_set_header X-Real_IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr:$remote_port; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; } }

重载 Nginx 服务,如果没有错误,打开 测试工具,服务地址输入 wss://域名

无需添加端口号,点击开启连接,提示 OPENED,恭喜你 Wss 服务就可以了

沈唁志,一个PHPer的成长之路! 任何个人或团体,未经允许禁止转载本文:《WebSocket使用Nginx反向代理解决Wss服务问题》,谢谢合作!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3