nginx 代理 WebSocket 配置

Nginx 代理 WebSocket 配置

1. 配置文件位置

  • Nginx 配置文件通常位于 /etc/nginx/nginx.conf,也可以在 /etc/nginx/conf.d/ 下创建新的配置文件,例如 websocket.conf

2. 基本配置结构

http {
    upstream websocket {
        server localhost:9301;  # 定义上游 WebSocket 服务器
    }

    server {
        listen 9300;  # 监听 9300 端口

        location / {
            proxy_pass http://websocket;  # 将请求代理到上游服务器
            proxy_http_version 1.1;  # 使用 HTTP/1.1
            proxy_set_header Upgrade $http_upgrade;  # 设置 Upgrade 头
            proxy_set_header Connection "upgrade";  # 设置 Connection 头
            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;  # 设置转发的 IP
            proxy_set_header X-Forwarded-Proto $scheme;  # 设置转发的协议
        }
    }
}

3. 配置说明

  • upstream websocket: 定义名为 websocket 的上游服务器,指定 WebSocket 服务器的地址(localhost:9301)。
  • server: 创建一个 Nginx 服务器块,监听来自客户端的 WebSocket 连接请求。
  • location /: 匹配所有请求,将其代理到上游服务器。
  • proxy_pass: 将请求转发到定义的上游服务器。
  • proxy_http_version: 指定使用 HTTP/1.1,以支持 WebSocket。
  • proxy_set_header: 设置请求头,以支持 WebSocket 协议。

4. 配置步骤

  1. 编辑 Nginx 配置文件,添加上述配置。
  2. 测试配置是否正确:
    sudo nginx -t
    
  3. 重新加载 Nginx 使配置生效:
    sudo systemctl reload nginx
    

5. 注意事项

  • 确保 upstreamserver 块都在同一个 http 块内。
  • 确保 WebSocket 服务器(9301端口)正常运行。

总结

通过上述配置,Nginx 可以成功代理 WebSocket 请求,将来自 ws://localhost:9300 的连接转发到 ws://localhost:9301

posted @   槑孒  阅读(1322)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
历史上的今天:
2022-10-29 js中.?、??、??=的用法和含义
点击右上角即可分享
微信分享提示