0
点赞
收藏
分享

微信扫一扫

websocket多级nginx代理

影子喵喵喵 04-04 19:30 阅读 2

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

举报

相关推荐

0 条评论