【问题标题】:running Tornado and Nginx on same server在同一台服务器上运行 Tornado 和 Nginx
【发布时间】:2011-12-07 00:44:55
【问题描述】:

我现在有一个由 nginx 提供的静态网站,我想在同一台服务器上使用 Tornado 开发一个应用程序。

Tornado 文档提到 wsgi 不支持非阻塞请求。

有没有办法让他们一起工作(在同一台服务器上)?

【问题讨论】:

    标签: web-applications nginx tornado


    【解决方案1】:

    当然可以。看看nginx.conf example on tornado's homepage

    在您的情况下,相关位是:

    http {
        # Enumerate all the Tornado servers here
        upstream frontends {
            server 127.0.0.1:8000;
            server 127.0.0.1:8001;
            server 127.0.0.1:8002;
            server 127.0.0.1:8003;
        }
        ...
        server {
            ...
            # for your "static" website
            location ^~ /static/ {
                root /var/www;
                if ($query_string) {
                    expires max;
                }
            }
            # for your tornado's app
            location / {
                proxy_pass_header Server;
                proxy_set_header Host $http_host;
                proxy_redirect false;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Scheme $scheme;
                proxy_pass http://frontends;
            }
            ...
        }
        ...
    }
    

    【讨论】:

    • 我读到了,但那是不同的服务器(不同的 IP 地址)对吧?我认为套接字是要走的路,我需要更多地研究它。
    • 一点也不。您可以让同一台服务器为不同的应用程序提供服务……例如,在我的个人网站上,我有一个 2 个 wordpress 博客和一个 python 应用程序,它们都来自同一个网络服务器。它们被配置为响应对不同 url 的请求(例如http://myserver/apphttp://myserver/wp1http://myserver/wp2。然后我重定向到指向,例如,http://wonderful-blog.com -> http://myserver/wp1。我希望它有意义。
    • 我想是的。澄清一下,tornado 实例监听 8000、8001、8002、8003 端口?
    • 正确。你有 4 个 Tornado 实例在端口 8000..8003 上运行,并且在它们上面有 nginx 负载平衡请求。
    • nginx.conf 链接已损坏,所以为了方便起见,我想我会提供当前工作链接。希望这可以帮助某人。 tornadoweb.org/en/stable/…
    猜你喜欢
    • 2017-04-23
    • 2016-01-02
    • 2013-06-20
    • 2018-12-04
    • 2010-09-11
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    相关资源
    最近更新 更多