【问题标题】:How to proxy_pass from nGINX to WebSocket Server (Tornado)如何从 nGINX 代理传递到 WebSocket 服务器(龙卷风)
【发布时间】:2012-09-28 12:06:28
【问题描述】:

我正在开发 Django Web 服务。我正在尝试使用 WebSocket (ws://) 来使用 PUSH。到目前为止,nGINX 中不支持 ws。所以我使用 Tornado Server 来托管 WebSocket。许多(几乎所有)教程都有使用 Socket.io 的解决方案。我不想使用 Socket.io 因为它不是纯 WebSocket(根据我)。我只想使用 ws 而不是 Socket.io (Node.js)。

嗯,我的前端服务器应该是 nGINX 来服务 HTTP 请求。 ws:// 请求应该被传递到 Tornado 服务器(或任何其他服务器,如果支持的话)

【问题讨论】:

    标签: nginx websocket push tornado


    【解决方案1】:

    这里是NGINX配置sn-p

    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }
    
    upstream websocket {
        server 192.168.100.10:8010;
    }
    
    server {
        listen 8020;
        location / {
            proxy_pass http://websocket;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
        }
    }
    

    更多详情可以查看他们的博客https://www.nginx.com/blog/websocket-nginx/

    【讨论】:

      【解决方案2】:

      在撰写本文时,Nginx 不支持 websocket - 现在在 1.3.13(2013 年 2 月)中支持

      问题是 nginx 不支持 websockets,因为它终止并将数据代理到下游服务。您需要将 HAProxy 放在您的 nginx 服务器前面,以按照您想要的方式路由流量。

      这里有一个很好的例子——HAProxy + WebSocket Disconnection——虽然他们说 nodejs 作为后端服务,但本质上一切都是一样的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-20
        • 1970-01-01
        相关资源
        最近更新 更多