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 小时前
极简部署linux免费ssl证书Let‘s Encrypt,自动续签,nginx/apache都可以,域名指向服务器即可,无需项目
linux·nginx·ssl
阿萨德528号2 小时前
Spring Boot + WebSocket超简单实战源码(前后端实时交互)
spring boot·websocket·交互
weixin_515069662 小时前
OkHttp-HTTP 客户端框架
网络协议·http·okhttp·框架
shenghuiping20012 小时前
OPSWAT https enable 问题解决
nginx·https·ssl·443·opswat
oMcLin2 小时前
如何在Ubuntu 22.04上通过调优Nginx和PHP‑FPM,提升高并发WordPress网站的负载均衡与缓存性能?
nginx·ubuntu·php
掘根13 小时前
【仿Muduo库项目】HTTP模块2——HttpRequest子模块,HttpResponse子模块
网络·网络协议·http
李白你好17 小时前
Burp Suite插件 | 高级HTTP头操作工具
网络·网络协议·http
五仁火烧17 小时前
Vue3 项目的默认端口行为
服务器·vue.js·nginx·容器·vue
CryptoRzz17 小时前
印度尼西亚(IDX)股票数据对接开发
java·后端·websocket·web3·区块链
xwj_86557433218 小时前
HTTP协议、接口测试流程、接口测试流程&文档&用例
网络·网络协议·http