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

相关推荐
SRC_BLUE_173 小时前
NSSCTF - Web | 【SWPUCTF 2021 新生赛】Do_you_know_http
网络·网络协议·http
小毛驴85019 小时前
HTTP方法GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS,TRACE,RESTful API设计的核心详解
http·github·restful
惘嘫、冋渞20 小时前
CentOS 7 下 Nginx 编译后热重启方案
chrome·nginx·centos
码农-小林21 小时前
使用leaflet库加载服务器离线地图瓦片(这边以本地nginx服务器为例)
运维·服务器·nginx
代码AI弗森1 天前
无状态的智慧:从 HTTP 到大模型的系统进化论
网络·网络协议·http
阑梦清川1 天前
docker入门教程--部署nginx和tomcat
nginx·docker·tomcat
大面积秃头1 天前
Http基础协议和解析
网络·网络协议·http
Greedy Alg1 天前
Socket编程学习记录
网络·websocket·学习
せいしゅん青春之我1 天前
[JavaEE初阶]网络协议-状态码
java·网络协议·http