nginx反代websocket

一、Websocket是什么?

WebSocket是一种在Web应用程序中实现双向实时通信的通信协议。与传统的HTTP请求-响应模型不同,WebSocket允许服务器主动向客户端发送消息,而不需要客户端发送请求。

以下是一些关于WebSocket的重要特点和用途:

  1. 双向通信:WebSocket提供了一个持久的连接,使得服务器和客户端可以通过该连接进行双向通信。这允许服务器实时向客户端推送数据,而不需要客户端发送请求。
  2. 实时性:由于WebSocket的双向通信特性,它非常适合实时应用程序,如在线聊天、实时协作和多人游戏。
  3. 较低的延迟和带宽消耗:相比于轮询或长轮询等传统的实时通信机制,WebSocket使用更少的网络流量,并且具有更低的延迟,因为不需要频繁的请求和响应。
  4. 兼容性:WebSocket协议被现代Web浏览器广泛支持,包括Chrome、Firefox、Safari等主流浏览器。
  5. 简单易用:WebSocket具有简单的API和协议,容易实现和使用。

在使用WebSocket时,通常涉及以下几个角色:

  • 客户端:通常是Web浏览器,通过JavaScript代码与WebSocket服务器建立连接,并处理收到的消息。
  • WebSocket服务器:负责接受和处理客户端的连接请求,以及处理收到的消息,并将消息广播给连接的客户端。
  • 应用程序:WebSocket服务器后端的应用程序,负责处理逻辑、生成消息,并将消息发送给WebSocket服务器。

总的来说,WebSocket提供了一种高效、实时的双向通信机制,使得Web应用程序可以轻松实现实时更新和响应。它在许多实时应用场景中被广泛使用,为用户提供了更好的交互体验。

二、nginx如何反代websocket?

要使用Nginx反向代理WebSocket,你可以按照以下步骤进行设置:

  1. 确保你安装了Nginx,并且已经配置好基本的Nginx服务器。
  2. 在Nginx的配置文件中添加以下内容,用于配置反向代理WebSocket的配置块:
 location / {
     proxy_pass http://172.16.100.200:8080;  

# websocket
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection $connection_upgrade;

  # 设置读写超时时间,默认 60s 无数据连接将会断开
  proxy_read_timeout 300s;
  proxy_send_timeout 300s;
  # Host 主机名
   proxy_set_header Host $host;
   # X-Real-IP 将真实访问者的远端 IP 地址转发给代理服务器
   proxy_set_header X-Real-IP $remote_addr;
   # X-Forwarded-For 标记客户端通过代理连接到服务器的源 IP
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   # X-Forwarded-Host 标记客户端通过代理连接到服务器的原始主机
   proxy_set_header X-Forwarded-Host $host:$server_port;
   # X-Forwarded-Server 代理服务器的主机名
   proxy_set_header X-Forwarded-Server $host;
   # X-Forwarded-Port 定义客户端请求的原始端口
   proxy_set_header X-Forwarded-Port $server_port;
   # X-Forwarded-Proto 标记客户端通过代理连接到服务器的协议
   proxy_set_header X-Forwarded-Proto $scheme;
   # proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;
 }

配置文件可以根据自己的需求修改

重新加载nginx配置文件可能会遇到报错[emerg] unknown "connection_upgrade" variable。

解决办法可以看下面的文档。

nginx报错nginx: [emerg] unknown "connection_upgrade" variable的解决办法 - 运维术 (cnbugs.com)

发表评论

后才能评论