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

nginx redirect to other application if 404

我的服务器上有两个 运行 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 的烧瓶应用程序,其配置文件为 /etc/nginx/sites-available/beta-project:

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

我想在访问 mywebsite.com/beta 时使用我的 beta-project。 但是当我访问mywebsite.com/beta时,服务器总是返回404。看来我还在使用alpha应用程序。

如何使 nginx 重定向到我的 beta 应用程序?

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

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