插件窝 干货文章 如何使用Nginx Proxy Manager实现Websockets代理

如何使用Nginx Proxy Manager实现Websockets代理

Proxy Websocket 配置 Nginx 959    来源:    2025-04-11

使用Nginx Proxy Manager实现Websockets代理

Nginx Proxy Manager (NPM) 是一个基于Nginx的图形化管理工具,可以方便地配置反向代理、SSL证书等。以下是配置Websockets代理的详细步骤:

基本配置步骤

  1. 登录Nginx Proxy Manager仪表盘

    • 访问你的NPM管理界面(通常是http://your-server-ip:81)
  2. 添加或编辑代理主机

    • 点击"Proxy Hosts" → "Add Proxy Host" 或编辑现有主机
  3. 配置基本代理设置

    • Domain Names: 输入你的域名(如ws.example.com)
    • Scheme: 选择httphttps(取决于后端服务)
    • Forward Hostname/IP: 输入后端Websocket服务的IP或主机名
    • Forward Port: 输入后端Websocket服务的端口
  4. 启用Websockets支持

    • 在"Advanced"选项卡中,添加以下自定义Nginx配置: proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1;
    • 或者简单勾选"Websockets Support"选项(如果NPM版本提供此选项)
  5. SSL配置(可选但推荐)

    • 在"SSL"选项卡中申请或上传SSL证书
    • 启用"Force SSL"和"HTTP/2 Support"
  6. 保存并应用配置

高级配置选项

如果需要更精细的控制,可以在"Custom Nginx Configuration"中添加:

# WebSocket超时设置(可选)
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;

# 缓冲区设置(可选)
proxy_buffering off;

# 防止WebSocket连接被压缩(可选)
proxy_set_header Accept-Encoding "";

验证配置

  1. 检查Nginx配置

    • 配置文件通常位于:/data/nginx/proxy_host/*.conf
    • 确保包含Websocket相关头部
  2. 测试Websocket连接

    • 使用浏览器开发者工具检查WebSocket连接
    • 或使用在线WebSocket测试工具

常见问题解决

  1. 连接立即断开

    • 确保所有必需的头部(Upgrade, Connection)已正确设置
    • 检查后端服务是否支持WebSocket协议
  2. 超时问题

    • 增加proxy_read_timeoutproxy_send_timeout
    • 确保没有中间设备(如防火墙)切断长连接
  3. SSL问题

    • 确保证书有效且未过期
    • 检查混合内容问题(http/https)
  4. 403 Forbidden错误

    • 检查NPM和后端服务之间的IP限制
    • 验证请求头部是否被正确传递

通过以上配置,Nginx Proxy Manager可以有效地代理WebSocket流量,同时保持其图形化管理的便利性。