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

相关推荐
努力买辣条1 小时前
基于 Docker 的高可用 WordPress 集群部署:分布式 Nginx + Keepalived、MySQL 主从复制与 ProxySQL 读写分离
分布式·nginx·docker
无级程序员16 小时前
kubernetes-dashboard使用http不登录
http·容器·kubernetes
Fireworkitte16 小时前
Ubuntu 系统 tar 包源码安装 Nginx
linux·nginx·ubuntu
熬夜苦读学习16 小时前
Reactor 反应堆模式
运维·服务器·网络·网络协议·http·智能路由器·php
小晶晶京京17 小时前
day38-HTTP
网络·网络协议·学习·http
前端世界17 小时前
鸿蒙应用网络开发实战:HTTP、WebSocket、文件下载与网络检测全攻略
网络·http·harmonyos
Agome9917 小时前
Docker之nginx安装
java·nginx·docker
努力买辣条1 天前
基于Docker的高可用WordPress集群部署:Nginx负载均衡+Mysql主从复制+ProxySQL读写分离
nginx·docker·负载均衡
苹果醋31 天前
Java并发编程-Java内存模型(JMM)
java·运维·spring boot·mysql·nginx
cloudcruiser1 天前
Apache HTTP Server:深入探索Web世界的磐石基石!!!
前端·其他·http·apache