要在 Nginx 上同时支持 HTTP 和 WebSocket,可以配置 Nginx 作为反向代理将传入的 WebSocket 连接转发到本地的目标端口,并且保持 HTTP 请求的正常代理。
以下是一个示例 Nginx 配置文件的片段,展示了如何实现这个目标:
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /path/to/ssl_certificate.crt;
ssl_certificate_key /path/to/ssl_certificate.key;
location / {
proxy_pass http://localhost:6789;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
这个配置假设已经有一个有效的 SSL 证书用于 HTTPS 连接,并将其路径指定在 ssl_certificate 和 ssl_certificate_key 中。
关键部分是在 location /
块中的配置。proxy_pass 指令将所有传入的请求代理到本地的 6789 端口。proxy_http_version 指令设置使用 HTTP/1.1 协议,proxy_set_header Upgrade
和 proxy_set_header Connection
指令会将 Upgrade 和 Connection 标头传递给后端服务器,以启用 WebSocket 连接。
通过这样配置,Nginx 将同时支持 HTTP 和 WebSocket 连接,将传入的请求代理到本地的 6789 端口上。请确保后端应用程序(运行在本地的 6789 端口上)能够处理和响应 WebSocket 连接。
将上述配置文件的内容添加到 Nginx 配置中,并重新加载 Nginx 配置文件,以使配置生效。