当前位置: 首页 > article >正文

php:nginx如何配置WebSocket代理?

在nginx配置中加入以下配置即可:

server {
        listen 80;
        server_name test.com;

        # 配置 WebSocket 代理
        location /ws {
            proxy_pass http://127.0.0.1:8083;
            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;
        }
    }

参数解释

    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 连接通常是长连接,因此需要设置较长的超时时间

其中http://127.0.0.1:8083为我们websocket服务监听的地址和端口,此时,如果客户端要连接websocket服务可以直接配置。

 例如js:

var webSocket = new WebSocket("ws://test.com/ws");

如果你希望配置https,则需要在nginx配置中加入ssl证书

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;


http://www.kler.cn/a/404403.html

相关文章:

  • HarmonyOS鸿蒙系统上File文件常用操作
  • C语言Day 04 学习总结
  • 丹摩|丹摩助力selenium实现大麦网抢票
  • 简单分析数据被序列化后的内容
  • python成绩分级 2024年6月python二级真题 青少年编程电子学会编程等级考试python二级真题解析
  • Layui Table 行号
  • 接雨水
  • 智能工厂的设计软件 为了监管控一体化的全能Supervisor 的监督学习 之 序8 进化论及科学的信息技术创新:分布式账本/区块链/智能合约 之2
  • yolov5 数据集分享:纯干货
  • GEE 训练教程——Sentinel-1的卷积(核函数)的分析和可视化
  • this.$prompt 限制输入长度
  • Windows环境GeoServer打包Docker极速入门
  • 出海第一步:搞定业务系统的多区域部署
  • 大模型-微调与对齐-非强化学习的对齐方法
  • CSS3 动画:前端开发的动态美
  • 实现了图像处理、绘制三维坐标系以及图像合成的操作
  • 对原jar包解压后修改原class文件后重新打包为jar
  • RestTemplate应用实践总结
  • 请问有什么限制预约报名人数的微信小程序/系统?
  • Arcgis 绘制地图
  • buuoj WEB做题笔记
  • scratch二次开发:控制blocks某些块不可以被删除
  • 堤防安全监测系统方案
  • 【C++篇】从基础到进阶:全面掌握C++ List容器的使用
  • 《Vue零基础教程》(2)Vue搭建环境+案例学习
  • 如果接口返回值图片有很长一串码,需要添加前缀