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

相关推荐
码上飞扬29 分钟前
Nginx负载均衡配置详解:轻松实现高可用与高性能
运维·nginx·负载均衡
不知真不只43 分钟前
网络编程之应用层协议(http)
服务器·网络·http
微臣愚钝1 小时前
【01】HTTP基本原理
网络·网络协议·http
nvvas1 小时前
介绍高性能的HTTP和反向代理服务器Nginx
网络协议·nginx
忍者算法2 小时前
在 Linux 下,服务器如何知道某个 TCP 连接来了消息? 这就涉及 IO 事件通知机制!
websocket·网络协议·tcp/ip·http·信息与通信
贾宝玉的玉宝贾2 小时前
FreeSWITCH 简单图形化界面40 - 使用mod_curl模块进行http请求
python·http·voip·freeswitch·sip
P7进阶路3 小时前
nginx 代理 redis
运维·redis·nginx
handsomestWei4 小时前
docker配置固定ip解决nginx代理容器名称dns缓存不更新问题
tcp/ip·nginx·docker·dns
zhangqiang08219 小时前
supervisord管理Gunicorn进程,使用Nginx作为反向代理运行flask web项目
nginx·gunicorn·supervisord
m0_7482382710 小时前
Nginx解决前端跨域问题
运维·前端·nginx