news 2026/5/8 2:58:46

Nginx中如何配置WebSocket代理?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Nginx中如何配置WebSocket代理?

Nginx 可以配置为 WebSocket 代理,将 WebSocket 连接从客户端转发到后端服务器。以下是如何在 Nginx 中配置 WebSocket 代理的详细步骤和示例配置。

1. 安装 Nginx

确保你已经安装了 Nginx。如果没有安装,可以使用以下命令进行安装:

sudo apt-get update sudo apt-get install nginx
2. 配置 WebSocket 代理

编辑 Nginx 配置文件,通常位于/etc/nginx/nginx.conf/etc/nginx/sites-available/default。以下是一个示例配置,展示了如何配置 WebSocket 代理。

示例配置:
http { # 定义 upstream 块,指定后端 WebSocket 服务器 upstream websocket_backend { server backend1.example.com:8080; server backend2.example.com:8080; } server { listen 80; server_name example.com; # 配置 WebSocket 代理 location /ws { proxy_pass http://websocket_backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 可选:设置超时时间 proxy_read_timeout 86400s; } # 配置静态文件或其他路径 location / { root /var/www/html; index index.html index.htm; } } }
3. 参数解释
  • proxy_pass:指定后端 WebSocket 服务器的地址。
  • proxy_http_version 1.1:设置 HTTP 版本为 1.1,WebSocket 协议需要 HTTP/1.1。
  • proxy_set_header Upgrade $http_upgrade:传递客户端的Upgrade头部。
  • proxy_set_header Connection "upgrade":传递客户端的Connection头部,指示这是一个 WebSocket 升级请求。
  • proxy_set_header Host $host:传递客户端的Host头部。
  • proxy_set_header X-Real-IP $remote_addr:传递客户端的真实 IP 地址。
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for:传递客户端的X-Forwarded-For头部。
  • proxy_set_header X-Forwarded-Proto $scheme:传递客户端的协议(HTTP 或 HTTPS)。
  • proxy_read_timeout 86400s:设置读取超时时间,WebSocket 连接通常是长连接,因此需要设置较长的超时时间。
4. 测试配置

在重新加载 Nginx 之前,先测试配置文件是否有语法错误。

sudo nginx -t
5. 重新加载 Nginx

如果配置文件没有问题,重新加载 Nginx 使配置生效。

sudo systemctl reload nginx
6. 验证配置

确保 WebSocket 连接可以正常建立和通信。可以在前端使用 WebSocket 客户端进行测试。

示例前端代码:
<!DOCTYPE html> <html> <head> <title>WebSocket Test</title> </head> <body> <script> var socket = new WebSocket('ws://example.com/ws'); socket.onopen = function() { console.log('WebSocket connection opened'); socket.send('Hello, WebSocket!'); }; socket.onmessage = function(event) { console.log('Message from server:', event.data); }; socket.onclose = function() { console.log('WebSocket connection closed'); }; socket.onerror = function(error) { console.error('WebSocket error:', error); }; </script> </body> </html>
总结

通过上述配置,Nginx 可以作为 WebSocket 代理,将客户端的 WebSocket 连接转发到后端服务器。这些配置确保了 WebSocket 连接的正确性和稳定性。如果你有更具体的问题或需要进一步的技术细节,请随时告诉我。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/4 16:02:10

基于STM32的工业控制ISR配置手把手教程

手把手教你打造工业级实时响应系统&#xff1a;STM32中断配置实战全解析在工厂的自动化产线上&#xff0c;一个电机突然过流&#xff0c;控制系统必须在几毫秒内切断电源&#xff1b;一台机器人手臂接近障碍物&#xff0c;安全光栅信号必须被立即捕获并处理&#xff1b;PLC需要…

作者头像 李华
网站建设 2026/5/3 17:38:32

STM32开发入门:Keil5安装与配置手把手教程

从零开始搭建STM32开发环境&#xff1a;Keil5安装与配置实战指南 你是不是也曾在准备动手写第一行代码时&#xff0c;被一堆工具链、驱动和配置项搞得晕头转向&#xff1f;明明只是想点亮一个LED&#xff0c;却卡在“无法连接目标”或者“找不到芯片”这种问题上。别急——这几…

作者头像 李华
网站建设 2026/4/30 6:46:31

Multisim汉化实战:软件层修改完整指南

Multisim汉化实战&#xff1a;从资源修改到自动化部署的完整技术路径你有没有遇到过这样的场景&#xff1f;打开Multisim准备做电路仿真&#xff0c;刚点开“Place”菜单就卡住了——Ground是接地还是电源&#xff1f;Probe到底该译成“探针”还是“探测器”&#xff1f;对于初…

作者头像 李华
网站建设 2026/5/2 11:33:33

工业网关开发中的CubeMX安装避坑指南

工业网关开发实战&#xff1a;STM32CubeMX安装避坑全记录 在我们最近的一个工业边缘计算项目中&#xff0c;团队刚拿到新设计的STM32H743核心板&#xff0c;准备着手开发支持Modbus、CAN和以太网协议转换的智能网关。一切就绪&#xff0c;却卡在了最基础的一环—— STM32Cube…

作者头像 李华
网站建设 2026/5/6 7:48:10

工业控制设备PCB图入门必看基础指南

看懂工业控制设备PCB图&#xff1a;从“天书”到实战的硬核入门指南你有没有过这样的经历&#xff1f;手里拿着一块布满密密麻麻走线和元器件的工业控制板&#xff0c;打开配套原理图却一头雾水——这个引脚到底连到哪儿了&#xff1f;那根细如发丝的走线是干什么用的&#xff…

作者头像 李华
网站建设 2026/5/7 21:20:41

AI 领域中的 Prompt(提示词/提示)是什么?

AI 领域中的 Prompt&#xff08;提示词/提示&#xff09;是什么&#xff1f;一、核心定义 Prompt&#xff0c;在人工智能领域&#xff0c;特指用户输入给大语言模型或其他生成式AI模型的指令、问题、上下文或信息片段&#xff0c;旨在引导模型产生符合期望的输出。 简单比喻&am…

作者头像 李华