在同一台服务器上运行Tornado和Nginx

10

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

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

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

1个回答

16

当然可以。看一下Tornado主页上的nginx.conf示例

在您的情况下,相关部分将是:

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地址),对吗? 我认为套接字是正确的方式,我需要更深入地探究。 - whotemp
完全不是这样。您可以使用同一服务器为不同的应用程序提供服务...例如,在我的个人网站上,我有两个WordPress博客和一个Python应用程序都由同一个Web服务器提供服务。它们被配置为响应不同URL的请求(例如http://myserver/apphttp://myserver/wp1http://myserver/wp2)。然后我有重定向指向,例如,http://wonderful-blog.com -> http://myserver/wp1。希望这有意义。 - lbolla
我认为是这样的。为了澄清,tornado实例监听8000、8001、8002、8003端口? - whotemp
正确。您有4个龙卷风实例在8000..8003端口上运行,并且nginx负载平衡请求。 - lbolla
1
nginx.conf的链接已经失效,所以我提供了当前可用的链接以方便大家使用。希望这能帮到有需要的人。http://www.tornadoweb.org/en/stable/overview.html?highlight=nginx#running-tornado-in-production - Friendly King
链接(来自回复和评论)已经失效。更新后的链接为:http://tornado.readthedocs.org/en/stable/guide/running.html#running-behind-a-load-balancer - Andrii Tykhonov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接