• 【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 代理:

    1. http {
    2. map $http_upgrade $connection_upgrade {
    3. default upgrade;
    4. '' close;
    5. }
    6. server {
    7. listen 80;
    8. server_name example.com;
    9. location / {
    10. proxy_pass http://websocket_backend;
    11. proxy_http_version 1.1;
    12. # WebSocket specific headers
    13. proxy_set_header Upgrade $http_upgrade;
    14. proxy_set_header Connection $connection_upgrade;
    15. # Standard headers to pass the host and IP
    16. proxy_set_header Host $host;
    17. proxy_set_header X-Real-IP $remote_addr;
    18. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    19. proxy_set_header X-Forwarded-Proto $scheme;
    20. # Adjust the timeout settings as needed
    21. proxy_read_timeout 600s;
    22. proxy_send_timeout 600s;
    23. }
    24. }
    25. }

    ### 详细说明

    1. 1. **HTTP Upgrade Handling**:
    2.    - `map $http_upgrade $connection_upgrade`: 这个 `map` 块是用来确定何时需要升级连接。如果 `Upgrade` 头被设置(HTTP 请求想要升级),则 `Connection` 头将被设置为 `upgrade`。否则,将其设置为 `close`
    3. 2. **Proxy Settings**:
    4.    - `proxy_pass http://websocket_backend;`: 这里将请求代理到名为 `websocket_backend` 的后端服务器。你需要根据实际后端服务进行相应配置。
    5.    - `proxy_http_version 1.1;`: WebSocket 需要 HTTP/1.1,因为 HTTP/1.0 不支持 `Upgrade` 头。
    6.    - `proxy_set_header Upgrade $http_upgrade;``proxy_set_header Connection $connection_upgrade;`: 这些头部确保了 WebSocket 的 `Upgrade` 请求正确传递。
    7. 3. **Standard Proxy Headers**:
    8.    - 设置一些标准的代理头部,如 `Host`, `X-Real-IP`, `X-Forwarded-For`, 和 `X-Forwarded-Proto`,以确保后端服务接收到正确和必要的信息。
    9. 4. **Timeout Settings**:
    10.    - `proxy_read_timeout``proxy_send_timeout` 设置较长的超时时间,以支持 WebSocket 连接通常需要保持较长时间的打开状态。

    ### 后端配置

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

    ### 调试和测试

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

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

  • 相关阅读:
    openshift搭建Istio
    y121.第七章 服务网格与治理-Istio从入门到精通 -- Istio流量治理快速入门和流量治理进阶(七)
    JAVA 简单缓存实现-nacos
    C++类详解
    matlab-day04
    java集合类史上最细讲解 - HashTable,Properties篇
    mysql数据库
    使用docker完成minio服务部署扩容备份迁移生产实践文档
    计算机视觉40例之案例03数字水印
    最长上升子序列模型
  • 原文地址:https://blog.csdn.net/zerotoall/article/details/140035576