2016-01-27 3 views
6

Я использую подстановочный знак в server_name. Я хочу, чтобы перенаправить все поддомены example.com (настроено как * .example.com) в foo.com кроме xyz.example.comКак исключить определенные поддомены server_name в конфигурации nginx

Я имею конфигурацию следующим образом

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, это работает на меня. –

Смежные вопросы