如果404,nginx重定向到其他应用程序

时间:2017-09-08 12:40:25

标签: python nginx flask uwsgi

我在服务器上运行两个Flask应用程序。第一个在/etc/nginx/sites-available/alpha-project中有一个nginx配置:

server {
    listen 80;
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:3033;
    }
}

因此,每当我访问mywebsite.com时,我都可以使用此应用程序(名为alpha-project)。

现在我有另一个带有配置文件beta-project {@ 1}}的烧瓶应用程序:

/etc/nginx/sites-available/beta-project

我想在访问server { listen 80; location /beta { include uwsgi_params; uwsgi_pass 127.0.0.1:3034; } } 时使用beta-project。 但是,当我访问mywebsite.com/beta时,服务器始终返回404.似乎我仍在使用mywebsite.com/beta应用程序。

如何让nginx重定向到我的alpha应用程序?

1 个答案:

答案 0 :(得分:1)

您的问题是两台服务器都没有虚拟名称。您需要将它们组合成一个配置

server {
    listen 80;
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:3033;
    }

    location /beta {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:3034;
    }
}

或者您需要使用两个单独的虚拟服务器名称

server {
    listen 80;
    server_name servera;
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:3033;
    }
}

server {
    listen 80;
    server_name serverb;
    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:3033;
    }
}

然后,您可以访问http://servera/的主服务器和http://serverb/beta的其他服务器。 serveraserverb名称都应使用/etc/hosts或DNS名称解析为IP