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自动生成,经过验证可用

相关推荐
德迅云安全—珍珍2 小时前
什么是udp攻击,为什么udp攻击难防御
网络·网络协议·udp
talenteddriver5 小时前
web: http请求(自用总结)
前端·网络协议·http
乾元6 小时前
AI 驱动的入侵检测与异常会话判别:从规则到行为分析前言:从“捕获敌人”到“守卫秩序”
运维·网络·人工智能·网络协议·安全
文弱书生6566 小时前
4-electronbot-USB协议前置知识
网络协议
Knight_AL6 小时前
Docker 中的端口映射原理:为什么 Nginx 要 `listen 80`,而不是“随便写端口”
nginx·docker·容器
LCG米7 小时前
车载以太网SOME/IP协议栈在TI TDA4VM平台上的实现与测试
网络·网络协议·tcp/ip
虹梦未来8 小时前
【运维心得】Ubuntu2404编译nginx隐藏Server信息
运维·服务器·nginx
chalmers_159 小时前
将单个 WebSocket 客户端封装为实例
服务器·websocket·网络协议
ZeroNews内网穿透10 小时前
EasyNode 结合 ZeroNews,实现远程管理服务器
运维·服务器·网络协议·安全·http
tgethe12 小时前
Nginx笔记
运维·笔记·nginx