0


【nginx】nginx配置websocket

本站以分享各种运维经验和运维所需要的技能为主

《python零基础入门》:python零基础入门学习

《python运维脚本》: python运维脚本实践

《shell》:shell学习

《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战

《k8》暂未更新

《docker学习》暂未更新

《ceph学习》ceph日常问题解决分享

《日志收集》ELK+各种中间件

《运维日常》运维日常

《linux》运维面试100问

【nginx】nginx配置websocket

背景:

公司有应用的转发是使用websocket的需求。

配置:

在 Nginx 中配置 WebSocket 支持涉及确保 HTTP 升级请求能够正确地从客户端通过 Nginx 转发到后端 WebSocket 服务。WebSocket 协议开始于一个 HTTP 请求,然后升级为 WebSocket 连接。正确配置 Nginx 是确保这一过程顺利进行的关键。

基本配置

下面是一个基本的 Nginx 配置示例,展示了如何设置 WebSocket 代理:

http {
    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://websocket_backend;
            proxy_http_version 1.1;

            # WebSocket specific headers
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;

            # Standard headers to pass the host and IP
            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;

            # Adjust the timeout settings as needed
            proxy_read_timeout 600s;
            proxy_send_timeout 600s;
        }
    }
}

详细说明

1. **HTTP Upgrade Handling**:
   - `map $http_upgrade $connection_upgrade`: 这个 `map` 块是用来确定何时需要升级连接。如果 `Upgrade` 头被设置(HTTP 请求想要升级),则 `Connection` 头将被设置为 `upgrade`。否则,将其设置为 `close`。

2. **Proxy Settings**:
   - `proxy_pass http://websocket_backend;`: 这里将请求代理到名为 `websocket_backend` 的后端服务器。你需要根据实际后端服务进行相应配置。
   - `proxy_http_version 1.1;`: WebSocket 需要 HTTP/1.1,因为 HTTP/1.0 不支持 `Upgrade` 头。
   - `proxy_set_header Upgrade $http_upgrade;` 和 `proxy_set_header Connection $connection_upgrade;`: 这些头部确保了 WebSocket 的 `Upgrade` 请求正确传递。

3. **Standard Proxy Headers**:
   - 设置一些标准的代理头部,如 `Host`, `X-Real-IP`, `X-Forwarded-For`, 和 `X-Forwarded-Proto`,以确保后端服务接收到正确和必要的信息。

4. **Timeout Settings**:
   - `proxy_read_timeout` 和 `proxy_send_timeout` 设置较长的超时时间,以支持 WebSocket 连接通常需要保持较长时间的打开状态。

后端配置

确保你的 WebSocket 服务配置正确,能够接受来自 Nginx 的代理连接。如果后端是 Node.js, Python 或任何其他支持 WebSocket 的语言,确认它们配置为监听来自 Nginx 代理的连接。

调试和测试

部署配置后,确保进行充分的测试以验证 WebSocket 连接是否稳定并且性能符合预期。使用 WebSocket 客户端库或工具(如 Chrome 开发者工具)可以帮助你测试和调试实时的 WebSocket 连接。

这样的配置确保了 WebSocket 连接能够通过 Nginx 顺利进行,同时保持了高性能和可靠性。

标签: nginx websocket 运维

本文转载自: https://blog.csdn.net/zerotoall/article/details/140035576
版权归原作者 向往风的男子 所有, 如有侵权,请联系我们删除。

“【nginx】nginx配置websocket”的评论:

还没有评论