为了让 Nginx 支持 WebSockets 和 HTTP/2 的共存,必须正确配置 Nginx。 下面是一个示例配置,展示了如何在同一 Nginx 服务器上支持 WebSocket 和 HTTP/2。
安装 Nginx:
确保 Nginx 已安装并支持 HTTP/2 和 WebSocket 模块。 大多数 Linux 发行版允许您使用包管理器安装 Nginx。 例如,在 Ubuntu 上,您可以使用以下命令:
sudo apt update
sudo apt install nginx
配置 Nginx:
编辑 Nginx 配置文件。 通常位于 /etc/nginx/nginx.conf
或 /etc/ 中。 nginx /sites-available/default
。 以下是设置示例。
服务器 {
监听 80;
服务器名称 example.com;
# HTTP/2 支持
lis十 443 ssl http2;
ssl_certificate /path/to/your/certificate. pem;
ssl_certificate_key /path/to/your/private-key.pem;
# WebSocket 支持
位置 /websocket {
proxy_pass http://localhost :8080; # 假设 WebSocket 服务器运行在端口 8080
proxy_http_version 1.1;
proxy_set_header 升级 $http_upgrade;
proxy_set_header 连接 "升级";
proxy_set_header Host $host;
}
# 在此处添加其他 HTTP/2 路由您可以
}
使用此配置:
* `listen 443 ssl http2 ;` 启用HTTPS 和 HTTP/2 支持。 您必须将“/path/to/your/certificate.pem”和“/path/to/your/private-key.pem”替换为 SSL 证书和私钥的实际路径。
* `location /websocket` 块配置 WebSocket 端点。 这假设 WebSocket 服务器在本地端口 8080 上运行。 您需要根据自己的实际情况调整 proxy_pass 指令的地址和端口。
* `proxy_http_version 1.1;` 告诉 Nginx 您正在使用 HTTP/1.1 协议,因为 WebSocket 是使用 HTTP/1.1 实现的。
* `proxy_set_header Upgrade $http_upgrade;` 和 `proxy_set_header Connection "Upgrade";` 是需要告诉 Nginx 的头信息将您的请求升级为 WebSocket 连接。
重新启动 Nginx:
保存配置文件并重新启动 Nginx 以应用更改:
sudo systemctl restart nginx
Nginx 服务器现在支持 HTTP/2 和 WebSocket 您将能够同时支持两者。 访问 https://example.com/websocket
(将 example.com
替换为您的域名)并通过浏览器或其他 HTTP 客户端进行连接 您可以测试您的 WebSocket 连接。和 。 访问其他 HTTP/2 路由。
评论前必须登录!
注册