0

我有一些静态 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 参数是没有被通过。

4

1 回答 1

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;
    }
于 2013-08-19T10:54:05.937 回答