avatar

瓜生花子八宝粥

少壮不努力 老了看浏览器

  • 首页
  • 开源项目
  • Linux
  • Windows
  • Docker
  • 中间件
  • 数据库
主页 Nginx WebSocket代理配置
文章

Nginx WebSocket代理配置

发表于 2024-12-9 更新于 2024-12- 9
作者 jepwei
10~13 分钟 阅读

1. 概述

本文介绍如何在Nginx中配置WebSocket代理,实现WebSocket连接的正向代理和负载均衡。WebSocket协议提供了浏览器和服务器之间的全双工通信通道,广泛应用于实时通信场景。

2. 环境要求

  • Nginx 版本:≥ 1.3.13
  • 操作系统:Linux
  • 权限要求:root 或 sudo 权限

3. 基础配置

3.1 配置文件位置

sudo vim /etc/nginx/nginx.conf
# 或者在子配置文件中:
sudo vim /etc/nginx/conf.d/websocket.conf

3.2 基本配置示例

server {
    listen 80;
    server_name example.com;
    
    # WebSocket 配置
    location /ws {
        # 后端WebSocket服务地址
        proxy_pass http://192.168.1.100:8080;
        
        # 基础代理设置
        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;
        
        # WebSocket 必要配置
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        
        # 超时设置
        proxy_read_timeout 60s;
        proxy_send_timeout 60s;
    }
}

4. 参数说明

参数说明作用
proxy_http_version 1.1启用HTTP/1.1WebSocket需要HTTP/1.1支持
proxy_set_header Upgrade设置协议升级头支持协议升级到WebSocket
proxy_set_header Connection设置连接类型指定升级类型为WebSocket

5. 高级配置

5.1 负载均衡配置

upstream websocket_servers {
    server 192.168.1.101:8080;
    server 192.168.1.102:8080;
    ip_hash;  # WebSocket会话保持
}

server {
    location /ws {
        proxy_pass http://websocket_servers;
        # ... 其他WebSocket配置 ...
    }
}

5.2 SSL/TLS配置

server {
    listen 443 ssl;
    server_name example.com;
    
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;
    
    location /ws {
        proxy_pass http://websocket_backend;
        # ... 其他WebSocket配置 ...
    }
}

6. 性能优化

  1. 超时设置
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
  1. 缓冲设置
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;

7. 注意事项

  1. 心跳检测
  • 建议在WebSocket应用中实现心跳机制
  • 合理设置proxy_read_timeout值
  1. 安全性考虑
  • 建议使用SSL/TLS加密
  • 实施访问控制
  • 配置请求频率限制
  1. 日志配置
# WebSocket访问日志
access_log /var/log/nginx/websocket.access.log combined;
error_log /var/log/nginx/websocket.error.log error;

8. 故障排查

  1. 连接问题
# 检查WebSocket连接状态
tail -f /var/log/nginx/error.log

# 检查连接是否建立
netstat -an | grep ESTABLISHED
  1. 常见错误处理
  • 502 Bad Gateway:检查后端服务
  • 504 Gateway Timeout:调整超时设置

9. 测试验证

// WebSocket客户端测试代码
const ws = new WebSocket('ws://example.com/ws');
ws.onopen = () => console.log('Connected');
ws.onmessage = (e) => console.log('Received:', e.data);
ws.onerror = (e) => console.error('Error:', e);

改进后的文档更加全面,包含了完整的配置说明、优化建议和故障排查方法。所有示例中的IP地址均已替换为示例值。文档结构清晰,便于运维工程师参考使用。

中间件
Nginx
许可协议: 
分享

相关文章

5月 23, 2025

nacos 部署

环境:centos7 版本:nacos-2.3.2 部署方式:编译安装 1.安装jdk (自行安装) 2.下载nacos安装包并解压 3.配置nacos的配置文件 ### 注释掉原有的端口参数再添加这个 server.port=7200 ### 开启鉴权 nacos.core.auth.enable

12月 31, 2024

容器部署fastdfs

本文详细介绍了在Docker中部署FastDFS的步骤,包括创建工作目录、配置Docker Compose、启动服务、检查端口监听以及修改Nginx配置。首先,需在主机创建FastDFS工作目录并设置权限,然后编辑docker-compose.yml文件定义服务配置。接下来,通过docker-compose命令启动服务,并使用netstat命令确认端口监听情况。最后,若需调整Nginx的8888端口配置,可进入storage容器并编辑nginx.conf文件,完成后重启容器以应用更改。

12月 24, 2024

容器部署nacos

本文详细介绍了如何在 Docker 中部署 Nacos,包括前提条件和具体步骤。首先确保已安装 Docker,然后拉取 Nacos 镜像并创建必要的目录。接着设置目录权限,复制初始配置文件到本地,重新运行 Nacos 容器。最后,用户可以通过浏览器访问 Nacos 管理界面,并可选地启用鉴权。按照这些步骤,用户将能够成功在 Docker 上部署 Nacos,并根据需求进行进一步配置。

下一篇

es部署

上一篇

Nginx 负载均衡配置

最近更新

  • 1panel 部署
  • jumpserver 堡垒机部署
  • ubuntu 设置时间显示为24小时制
  • pritunl vpn 部署
  • dockovpn 部署

热门标签

nacos openvpnas 资源分享 docker oracle mysql ubuntu 开源项目 虚拟化 Linux

目录

©2025 瓜生花子八宝粥. 保留部分权利。

使用 Halo 主题 Chirpy