Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx 在一个域/端口对上为2台服务器提供服务_Nginx_Webserver_Flask_Uwsgi - Fatal编程技术网

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

Nginx 在一个域/端口对上为2台服务器提供服务,nginx,webserver,flask,uwsgi,Nginx,Webserver,Flask,Uwsgi,我有一些静态HTML/Javascript/CSS文件,我想在/ 但我也有一个Web服务器,它使用Flask和uwsgi执行用Python编写的所有API调用。 我想做的是让我的所有静态内容都可以通过localhost访问,我的web API可以通过localhost/API访问。 这是我在已启用站点中的默认站点: server { listen 80; server_name localhost; root /var/www; location /api {

我有一些静态HTML/Javascript/CSS文件,我想在
/

但我也有一个Web服务器,它使用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参数没有被传递。

从我可以收集的文档()来看,您选择的方法仅在应用程序设置为URL根目录时有效。我从您的/api位置删除了try_文件,因为我认为不需要它,因为您没有从那里提供静态文件。您可能也不需要重写

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;
    }