Nginx篇之实现nginx转发兼容HTTP和Websocket两种协议

Nginx实现同时兼容http协议和websocket协议

html 复制代码
map $http_upgrade $eop_gateway {
    default "eop-gateway-http";
    websocket "eop-gateway-ws";
}

# 控制 Connection header
map $http_upgrade $connection_upgrade {
    default "keep-alive";    # HTTP 请求
    websocket "upgrade";     # WebSocket 请求
}

upstream eop-gateway-http {
    server XXXXX:8080;
}

upstream eop-gateway-ws {
    server XXXXX:23643;
}

server {
    listen 8888;

    location / {
        proxy_pass http://$eop_gateway;

        # 通用设置
        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 设置
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }
}

参数解释:

重要的是这两行,它表明是websocket连接进入的时候,进行一个连接升级将http连接变成websocket的连接。

启用支持websocket连接:

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection "upgrade";

proxy read timeout 表明连接成功以后等待服务器响应的时候,如果不配置默认为60s;

proxy_http_version 1.1;表明使用http版本为1.1

相关推荐
三思而后行,慎承诺2 小时前
tcp 和http 网络知识
网络·tcp/ip·http
JavaEdge.2 小时前
LangChain4j HTTP 客户端定制:解锁 LLM API 交互的更多可能性
网络·网络协议·http
Hy行者勇哥2 小时前
形象解释 HTTP 的四种常见请求方式及其中的区别联系
网络·网络协议·http
Gazer_S4 小时前
【HTTP通信:生活中的邮局之旅】
网络协议·http·生活
layman05286 小时前
node.js 实战——(Http 知识点学习)
http·node.js
Gazer_S7 小时前
【HTTP/2:信息高速公路的革命】
网络·网络协议·http
lLinkl7 小时前
项目笔记2:post请求是什么,还有什么请求
服务器·网络协议·http
小厂永远得不到的男人7 小时前
基于 Trae 的 WebSocket 聊天室保姆级教程(超详细版)
websocket·全栈·trae
小厂永远得不到的男人9 小时前
WebSocket深度剖析:实时通信的终极解决方案实践指南
后端·websocket
花千树-0109 小时前
使用 Frp 同时实现 HTTP 和 HTTPS 内网穿透
网络协议·http·https