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

相关推荐
杰瑞学AI2 小时前
我的全栈学习之旅:FastAPI (持续更新!!!)
后端·python·websocket·学习·http·restful·fastapi
西贝爱学习5 小时前
【软件】nginx-1.28.0安装包(Windows版)
运维·nginx
zrande6 小时前
Nginx 负载均衡通用方案
nginx·负载均衡
雪碧聊技术7 小时前
关于springboot定时任务和websocket的思考
websocket·springboot定时任务
ErizJ7 小时前
WebSocket | 一点简单了解
网络·websocket·网络协议
qq_326699119 小时前
Python解析Excel数据从入门到精通
websocket
小灰灰的可爱无人可替代20 小时前
记录一次使用docker和docker-compose更新vue前端项目问题
nginx·docker·vue
会飞的鱼_12321 小时前
设备管理平台项目全流程部署指南:从环境到ELK日志监控
nginx
雲帝1 天前
爱发电nginx转发企业微信webhook
nginx
Chandler241 天前
一图掌握 网络协议 核心要点
网络协议·tcp/ip·计算机网络·http