概述
最新上线了一个WebSocket 服务,在本地连接和测试都可以,都是通过的,就这样开始上线了,部署线上之后,怎么连接都链接不成功,这个是docker 部署的,在域名进行转发,这个操作都是平台替我们做的,我们只有业务代码和逻辑,我第一反应是gatway 里面需要配置什么,我本地测试和转换都是会没有出现类似的问题。
问题解决
在容器中,调试也可以连接就是在,通过子域名连接就会出现失败问题。
那就出现在nginx 转发的过程了。
Nginx配置WebSocket
WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
Nginx 作为高性能的 HTTP 和反向代理服务器,在处理 WebSocket 协议时,需要进行特定的配置来支持 WebSocket 的连接和通信。本文将详细介绍如何在 Nginx 中配置 WebSocket。
配置nginx
server {
listen 80;
server_name your_domain.com;
location /ws/ {
proxy_pass http://backend_server;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
解释配置项
proxy_pass http://backend_server;:指定后端 WebSocket 服务的地址。
proxy_http_version 1.1;:设置代理使用的 HTTP 版本为 1.1,这是 WebSocket 所必需的。
proxy_set_header Upgrade host;:传递原始请求中的主机头信息给后端服务器。
成功
连接成功。https 和 wss 都是可以的。