微服务下 WebSocket服务 连接time out 处理方式

概述

最新上线了一个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 http_upgrade;:传递 Upgrade 头信息给后端服务器,这告诉服务器客户端希望升级到 WebSocket 协议。 proxy_set_header Connection "upgrade";:传递 Connection 头信息,用于控制或指定当前连接或消息体的性质。 proxy_set_header Hosthost;:传递原始请求中的主机头信息给后端服务器。

成功

连接成功。https 和 wss 都是可以的。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容