2016-01-27 159 views
6

我在server_name中使用通配符。我想重定向的example.com所有子域(配置爲* example.com)的情況,以foo.com除了xyz.example.com如何在nginx配置中排除特定的子域名server_name

我的配置如下

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

我不想改變任何要求來xyz.example.com

回答

4

您至少需要兩個服務器塊,而nginx將選擇更具體的服務器塊來處理請求。有關詳細信息,請參見this document

您將需要一個服務器塊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/; 
} 
+0

感謝@Richard這是爲我工作。 –