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

相关推荐
Goodbye3 天前
大模型无状态架构:从 HTTP 协议到 Harness AI 工程的深度解析
http
Avan_菜菜4 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
ping某8 天前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
霜落长河9 天前
抛弃TCP改用UDP,HTTP3怎么了?
http
之歆10 天前
现代 HTTP 客户端深度解析:Fetch 与 Axios
chrome·网络协议·http
難釋懷10 天前
Nginx反向代理中的容错机制
运维·nginx
bloglin9999910 天前
Nginx高危漏洞CVE-2021-23017及配置样例
运维·nginx
进阶的小名10 天前
Spring Boot SSE + Nginx 配置:解决 EventSource 不实时返回、连接超时、流式响应被缓冲问题
spring boot·后端·nginx
難釋懷10 天前
Nginx获取客户端真实IP
服务器·前端·nginx
qq_谁赞成_谁反对10 天前
甲方IT的成长之路--nginx实战--2604
服务器·数据库·nginx