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

相关推荐
pixcarp15 分钟前
Nginx实战部署与踩坑总结 附带详细配置教程
服务器·前端·后端·nginx·golang
Rust研习社2 小时前
Reqwest 兼顾简洁与高性能的现代 HTTP 客户端
开发语言·网络·后端·http·rust
Slow菜鸟3 小时前
Java 开发环境安装指南(7) | Nginx 安装
java·开发语言·nginx
陈皮糖..14 小时前
27 届运维实习笔记|第三、四周:从流程熟练到故障排查,企业运维实战深化
运维·笔记·sql·nginx·ci/cd·云计算·jenkins
Walter先生16 小时前
Python 获取美股盘前盘后数据:yfinance 的坑与解法
websocket·实时行情数据源
_Evan_Yao18 小时前
对话的边界:HTTP 的克制,SSE 的流淌,WebSocket 的自由
java·后端·websocket·网络协议·http
空中海20 小时前
Nginx 知识体系 · 下篇:高级与实战
运维·nginx·spring
叶之香1 天前
探究 libhv Socketpair 在 clumsy 模拟延迟下的“超时”之谜
windows·websocket
牛奶1 天前
不经过服务器,两个人怎么直接通话?
前端·websocket·webrtc
身如柳絮随风扬1 天前
Nginx 入门教程:从安装到配置反向代理与负载均衡
运维·nginx·负载均衡