uWSGI和nginx配置,用于在同一服务器上的不同端口上运行的多个烧瓶应用程序

时间:2017-02-27 11:03:35

标签: api nginx flask configuration uwsgi

我有多个小瓶子应用程序。我想在同一台服务器(单域)上的不同端口上运行每个烧瓶应用程序。

例如说我有3个烧瓶应用程序

  1. tasks.py - > API端点为/仅任务
  2. users.py - > API终结点仅限/用户
  3. analysis.py - > API端点仅使用/ analysis
  4. 域名:api.test.com

    我想在端口8080上运行tasks.py,在端口5000上运行users.py,在端口4500上运行analyze.py。

    我想配置 uWSGI nginx ,这样当我点击 api.test.com/task/xxxx 时,我想要请求被定向到端口 8080 (其中tasks.py正在运行), 同样 api.test.com/user/xxxx 应该指向 5000 api.test.com/analysis/xxxx 4500

1 个答案:

答案 0 :(得分:1)

在我看来,你可以通过一个端口获得一个单独的uWSGI,但如果你喜欢这种思维方式,那么你可以按照下一个方式进行操作。

假设您已经在不同的端口上运行了几个uWSGI实例:8080,5000和4500。 然后你需要创建一个Nginx配置,其中包含大约以下内容(请阅读评论):

# webserver configuration
server {

    # port to be listened by the web-server
    listen      80;

    # domain name with its aliases or the ip
    server_name   api.test.com;

    # SETUP THREE LOCATION SECTIONS FOR EACH ACTION

    location /task {
        # AND SPECIFY THE NEEDED ADDRESS:PORT HERE
        uwsgi_pass  YOUR_SERVER_IP:8080;

        # ONE MAY ALSO USE UNIX-SOCKET (IF ON THE SAME SERVER), INSTEAD OF A PORT
        # uwsgi_pass unix:/path/to/the/socket.sock

        include     /etc/nginx/uwsgi_params; # stadard parms with environment variables required by a uwsgi app
    }

    location /user {
        uwsgi_pass  YOUR_SERVER_IP:5000;
        include     /etc/nginx/uwsgi_params;
    }

    location /analysis {
        uwsgi_pass  YOUR_SERVER_IP:4500;
        include     /etc/nginx/uwsgi_params;
    }
}

我希望,您知道如何为每个端口运行三个uWSGI实例。

在我看来,这非常难看,因为为了添加任何新动作,您将不得不再次编辑Nginx配置。所以我不推荐这个解决方案,只是建议这个答案作为Nginx与其他网络服务器相关的功能的演示。