如何在nginx配置中排除特定的子域server_name

pgo*_*ngi 9 nginx nginx-location

我正在使用通配符server_name.我想将example.com(配置为*.example.com)的所有子域重定向到foo.com除外xyz.example.com

我有如下配置

server {
        listen          80;
        server_name     *.example.com;
        location / {
            proxy_pass      http://$1.foo.com;
        }
}
Run Code Online (Sandbox Code Playgroud)

我不想改变任何请求 xyz.example.com

Ric*_*ith 9

您至少需要两个服务器块,nginx并将选择更具体的服务器块来处理请求.请参阅此文档了解详细信息

您将需要一个服务器块,xyz.example.com例如:

server {
    listen      80;
    server_name xyz.example.com;

    location / {
        proxy_pass http://$1.foo.com;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后是a default_server或通配符服务器,例如:

server {
    listen 80;
    server_name *.example.com;
    return http://foo.com/;
}
Run Code Online (Sandbox Code Playgroud)

要么:

server {
    listen 80 default_server;
    return http://foo.com/;
}
Run Code Online (Sandbox Code Playgroud)