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

websocket多级nginx代理

在使用多层Nginx代理时,WebSocket的连接可能会遇到一些问题,因为WebSocket连接是持久化的,它需要Upgrade头部来确认升级到WebSocket协议。在多层代理的情况下,每层代理可能会修改或丢失这个Upgrade头部信息。

为了确保WebSocket能够在多层代理下正确工作,你需要确保每层代理都正确地处理WebSocket的Upgrade请求

以下是一个Nginx配置的例子,展示了如何在多层代理中正确配置WebSocket:

# 第一层Nginx配置
server {
    listen 80;
    server_name example.com;
 
    location / {
        proxy_pass http://backend;
        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;
    }
}
 
# 第二层Nginx或应用服务器配置
upstream backend {
    server backend1.example.com;
    server backend2.example.com;
}
 
server {
    listen 80;
    server_name backend*.example.com;
 
    location / {
        proxy_pass http://websocket_backend;
        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;
    }
}
 
# WebSocket后端配置
upstream websocket_backend {
    server websocket_backend1;
}
 
server {
    listen 80;
    server_name websocket_backend*;
 
    location / {
        proxy_pass http://websocket_app_server;
        proxy_http_version 1.1;
        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;
    }
}

来自百度搜索,AI自动生成,经过验证可用

http://www.lryc.cn/news/332219.html

相关文章:

  • 【python从入门到精通】-- 第四战:语句汇总
  • 【NC50937】货仓选址
  • Nginx配置使用笔记
  • GridLayoutManager 中的一些坑
  • 算法实验二 矩阵最小路径和 LIS
  • Apache Paimon实时数据糊介绍
  • 计算机网络:数据链路层 - 可靠传输协议
  • 苍穹外卖07(缓存菜品,SpringCache,缓存套餐,添加购物车菜品和套餐多下单,查看购物车,清除购物车,删除购物车中一个商品)
  • C语言第三十八弹---编译和链接
  • 无人售货奶柜:开启便捷生活的新篇章
  • STM32为什么不能跑Linux?
  • Dubbo 3.x源码(18)—Dubbo服务引用源码(1)
  • 设计模式:工厂模式和抽象工厂模式的区别
  • python面试题(36~50)
  • Vue 样式技巧总结与整理[中级局]
  • cesium加载.tif格式文件
  • 分布式全闪占比剧增 152%,2023 年企业存储市场报告发布
  • LeetCode 707. 设计链表(单链表、(非循环)双链表 模板)
  • 深入了解Flutter中Overlay的介绍以及使用
  • 文本直接生成2分钟视频,即将开源模型StreamingT2V
  • 时序预测 | Matlab实现SOM-BP自组织映射结合BP神经网络时间序列预测
  • FPGA高端图像处理开发板-->鲲叔4EV:12G-SDI、4K HDMI2.0、MIPI等接口谁敢与我争锋?
  • linux练习-交互式传参
  • 【数据结构(一)】初识数据结构
  • 前端三剑客 —— CSS (第六节)
  • MyBatis 解决上篇的参数绑定问题以及XML方式交互
  • Rust语言之属性宏(Attribute Macro)derive
  • [技术闲聊]我对电路设计的理解(六)-原理图封装
  • 算法(滑动窗口四)
  • 学习记录:bazel和cmake运行终端指令