websocket 基于什么协议 tcp 在nginx怎么配置?

1 个回答

  • 上官玉儿
    舒适是我继续一切关系的标准
    ### WebSocket 基于什么协议? WebSocket 是一种基于 **TCP 协议**的全双工通信协议。它通过 **HTTP 协议的 Upgrade 机制**完成握手后切换到 WebSocket 协议,从而在单个 TCP 连接上实现双向数据传输。 ### 在 Nginx 中配置 WebSocket #### 基本配置 ```nginx http { upstream websocket_backend { server 127.0.0.1:8080; # WebSocket 后端服务地址 } server { listen 80; server_name example.com; location /websocket { proxy_pass http://websocket_backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; 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_read_timeout 3600s; proxy_send_timeout 3600s; } } } ``` #### HTTPS 支持 如果需要通过 HTTPS 使用 WebSocket: ```nginx server { listen 443 ssl; server_name example.com; ssl_certificate /path/to/certificate.crt; ssl_certificate_key /path/to/private.key; location /websocket { proxy_pass http://websocket_backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; 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_read_timeout 3600s; proxy_send_timeout 3600s; } } ``` --- ### 配置解释 1. **`proxy_http_version`**: 设置为 HTTP 1.1,支持 `Upgrade` 头部。 2. **`proxy_set_header Upgrade` 和 `Connection`**: 允许 HTTP 升级为 WebSocket 协议。 3. **`proxy_read_timeout` 和 `proxy_send_timeout`**: 防止 WebSocket 长时间空闲时被关闭。 4. **`proxy_pass`**: 转发 WebSocket 请求到后端服务。 通过配置,Nginx 可以代理 WebSocket 请求并支持 HTTP 和 HTTPS 通信。
    发布于 2024-12-11 13:40 •IP属地 重庆
    举报
    评论
    收藏