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

相关推荐
永远不会出bug30 分钟前
JAVA:WebSocket 「在线状态 + 强制挤下线通知」
网络·websocket·网络协议
日取其半万世不竭42 分钟前
用云服务器部署 Hexo 博客,Nginx 托管静态页面全流程
运维·服务器·nginx
hanyi_qwe1 小时前
Mysql 与 Nginx 双机高可用
数据库·mysql·nginx
Densen20142 小时前
企业H5站点升级PWA (三)
前端·nginx·c#
夜瞬4 小时前
HTTP基础教程:请求方法、状态码、JSON、鉴权、超时、重试与流式返回
网络协议·http·json
net3m3319 小时前
所有esp_websocket_client_send。。。的地方都加锁,就不容易websocket 断线重连
网络·websocket·网络协议
tzy23319 小时前
Nginx 的重定向规则
nginx·location·return·302·301·rewrite·last
你觉得脆皮鸡好吃吗19 小时前
HTTP (XSS前简单了解)
网络·网络协议·http·网络安全学习
明月_清风1 天前
Nginx 模块机制深度解析:从核心原理到生产实践
前端·nginx
摸鱼仙人~1 天前
HTTP 状态码系统拆解
网络·网络协议·http