当前位置: 首页 > 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自动生成,经过验证可用

相关文章:

  • 八大排序(尚未完善)
  • 6-95 希尔排序(Java语言描述)
  • 设计模式——抽象工厂模式02
  • 1236. 递增三元组:做题笔记
  • acwing算法提高之图论--floyd算法及其扩展应用
  • 江协STM32:定时器定时中断和定时器定时闹钟
  • 【Python第三方库】lxml 解析器和xpath路径语言
  • 【算法练习】28:选择排序学习笔记
  • 已解决org.apache.lucene.store.AlreadyClosedException: 已经关闭异常的正确解决方法,亲测有效!!!
  • 【项目新功能开发篇】开发编码
  • vue3中播放flv流视频,以及组件封装超全
  • 纯C++设置浮点数精度
  • 4. python练习题4-水仙花数
  • 【Oracle篇】expdp/impdp高效完成全部生产用户的全库迁移(第四篇,总共四篇)
  • 【考研经验贴】24考研860软件工程佛系上岸经验分享【丰富简历、初复试攻略、导师志愿、资料汇总】
  • python3.6+scrapy+mysql 爬虫实战
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 0x05 Python数据分析,Anaconda八斩刀
  • 2017前端实习生面试总结
  • CSS居中完全指南——构建CSS居中决策树
  • Hibernate【inverse和cascade属性】知识要点
  • Javascript 原型链
  • Javascript编码规范
  • JavaScript设计模式之工厂模式
  • js如何打印object对象
  • leetcode-27. Remove Element
  • Nacos系列:Nacos的Java SDK使用
  • v-if和v-for连用出现的问题
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 入口文件开始,分析Vue源码实现
  • 一个SAP顾问在美国的这些年
  • 译有关态射的一切
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • #define 用法
  • $$$$GB2312-80区位编码表$$$$
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (function(){})()的分步解析
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (十一)c52学习之旅-动态数码管
  • (译)计算距离、方位和更多经纬度之间的点
  • .describe() python_Python-Win32com-Excel
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .Net6使用WebSocket与前端进行通信
  • .NET连接MongoDB数据库实例教程
  • .NET性能优化(文摘)
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • @开发者,一文搞懂什么是 C# 计时器!
  • [【JSON2WEB】 13 基于REST2SQL 和 Amis 的 SQL 查询分析器
  • [Android Pro] android 混淆文件project.properties和proguard-project.txt
  • [BUUCTF 2018]Online Tool
  • [bzoj1006]: [HNOI2008]神奇的国度(最大势算法)
  • [C++] cout、wcout无法正常输出中文字符问题的深入调查(1):各种编译器测试