在现代 Web 应用中,WebSocket 作为一种全双工通信协议,为实时数据传输提供了强大的支持。若要确保 WebSocket 在生产环境中的稳定性和性能,使用 Nginx 作为反向代理服务器是一个明智的选择。本篇文章将带你了解如何在 Nginx 中配置 WebSocket,并验证其是否正常工作。
1. Nginx 中的 WebSocket 配置
1.1 安装 Nginx
在进行配置之前,确保你的系统上已安装 Nginx。你可以使用以下命令来安装:
Ubuntu/Debian:
sudo apt update
sudo apt install nginx
CentOS/RHEL:
sudo yum install nginx
1.2 基本 Nginx 配置
打开 Nginx 配置文件(通常位于 /etc/nginx/nginx.conf
或 /etc/nginx/sites-available/default
),并添加以下内容以支持 WebSocket 连接。
注意监听端口号不是80的话,反向代理可能成功不了
server {listen 80; # 注意这里要替换为80 (websockt默认瞄准端口)server_name yourdomain.com; # 替换为你的域名location /ws { # WebSocket 路径proxy_pass http://localhost:8080; # 你的 WebSocket 服务器地址proxy_http_version 1.1; # 确保使用 HTTP/1.1proxy_set_header Upgrade $http_upgrade; # 必须的配置proxy_set_header Connection "Upgrade"; # 必须的配置proxy_set_header Host $host; # 保留主机头部proxy_set_header X-Real-IP $remote_addr; # 客户端真实 IPproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 转发 IPproxy_set_header X-Forwarded-Proto $scheme; # 转发协议}location / { # 其他请求proxy_pass http://localhost:8080; # 可以根据实际情况修改}
}
我修改了proxy_pass让他直接访问我的后端服务,之前的是
如果要使用myserver 要先配置好自己的,我的是webservers 不太一样且端口号不同,就改掉了
1.3 重启 Nginx
配置完成后,需要重启 Nginx 以应用更改:
sudo systemctl restart nginx
# 或者
nginx -s reload
2. 验证 WebSocket 配置的正确性
确保 WebSocket 正常工作的方式有很多,以下是几种简单有效的方法:
2.1 使用浏览器的开发者工具
- 打开你的网页应用并使用浏览器的开发者工具(通常按 F12)。
- 切换到 Network 标签。
- 刷新页面,并查看 WebSocket 连接。
- 查找以
ws://
或wss://
开头的请求,确认其状态为101 Switching Protocols
。这表示 WebSocket 连接已成功建立。