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

相关推荐
驭渊的小故事15 小时前
网络原理04(http协议详细解析3)(2000详细解析HTTPS的工作原理)
网络·网络协议·http
IPdodo_16 小时前
2026年爬虫代理 IP 选择指南:从可用率、延迟到成本验收
网络协议·tcp/ip·scrapy·http·https·beautifulsoup·httpx
程序员夏洛17 小时前
HTTP 请求包含哪些内容,请求头和请求体有哪些类型?
网络·网络协议·http
墨着染霜华17 小时前
SpringCloud Gateway线上Nginx代理后自定义下划线请求头丢失(app_name/app_version获取不到)完美解决
nginx·spring cloud·gateway
流光D18 小时前
AI Era: Building Web Sites and Configuring Nginx Reverse Proxy Process
前端·人工智能·nginx
美酒没故事°20 小时前
https和tls有什么区别?
网络协议·http·https
Lsetea21 小时前
Cloudflare报526 Invalid SSL certificate:源站证书与Nginx回源TLS排查
nginx·https·ssl证书·cloudflare·tls
姚不倒1 天前
负载均衡架构设计:F5 ↔ Nginx/HAProxy ↔ Keepalived 全链路映射
运维·网络·nginx
春风解人意1 天前
从零开始学习嵌入式P33----网络基础之HTTP
网络·学习·http
2401_862880821 天前
Linux应用层开发 --- HTTP
linux·运维·http