13

我在server_name. 我想将example.com(配置为 *.example.com)的所有子域重定向到foo.comexceptxyz.example.com

我的配置如下

server {
        listen          80;
        server_name     *.example.com;
        location / {
            proxy_pass      http://$1.foo.com;
        }
}

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

4

2 回答 2

11

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

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

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

    location / {
        proxy_pass http://$1.foo.com;
    }
}

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

server {
    listen 80;
    server_name *.example.com;
    return http://foo.com/;
}

或者:

server {
    listen 80 default_server;
    return http://foo.com/;
}
于 2016-01-27T13:51:59.287 回答
0

'*' 通配符被 nginx 忽略:

nginx:[警告] 0.0.0.0.:80 上的服务器名称“*.example.com”冲突,已忽略

于 2020-02-07T15:52:16.477 回答