在一个域/端口对上提供2个服务器

时间:2013-08-18 23:06:12

标签: nginx webserver flask uwsgi

我有一些静态的HTML / Javascript / CSS文件,我想在/投放。
但我也有一个网络服务器,它使用Flask和uwsgi执行我用Python编写的所有API调用 我要做的是让我的所有静态内容都可以作为localhost访问,我的web API可以通过localhost / api访问。

这是我在启用网站的默认网站:

server {
    listen 80;
    server_name localhost;
    root /var/www;

    location /api {
        location / {
            try_files $uri @app;
        }

        location @app {
            include uwsgi_params;
            uwsgi_pass 127.0.0.1:3031;
        }
    }
}

正如您所看到的,我正在提供位于/var/www的静态内容,并且我正在尝试将所有请求/api由uwsgi处理..
目前,当我尝试这个时,uwsgi给了我404,我认为这是因为没有传递uwsgi参数。

1 个答案:

答案 0 :(得分:0)

从我可以收集的文档(http://flask.pocoo.org/docs/deploying/uwsgi/)中,您选择的方法仅在应用程序设置为URL根目录时才有效。我从/ api位置删除了try_files,因为我不相信它是不需要的,因为你没有从那里提供静态文件。您可能也不需要重写。

server {
    listen 80;
    server_name localhost;
    root /var/www;

    location / {
        try_files $uri $uri/ =404
    }

    location = /api { rewrite ^ /api/; }
    location /api {
        include uwsgi_params;
        uwsgi_param SCRIPT_NAME /api;
        uwsgi_modifier1 30;
        uwsgi_pass 127.0.0.1:3031;
    }