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 @   槑孒  阅读(1179)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 超详细,DeepSeek 接入PyCharm实现AI编程!(支持本地部署DeepSeek及官方Dee
· 用 DeepSeek 给对象做个网站,她一定感动坏了
· .NET 8.0 + Linux 香橙派,实现高效的 IoT 数据采集与控制解决方案
· DeepSeek处理自有业务的案例:让AI给你写一份小众编辑器(EverEdit)的语法着色文件
历史上的今天:
2022-10-29 js中.?、??、??=的用法和含义
点击右上角即可分享
微信分享提示