В Apache, если 1) у меня есть несколько виртуальных хостов, прослушивающих один порт и 2) если ни один из запросов не соответствует ни одному из виртуальных хостов, тогда первый виртуальный хост будет тем, который ответит на запрос. Например, учитывая, что у меня есть такая конфигурация:
<VirtualHost *:8080>
ServerName www.fallbacksite.com:8080
ServerAlias *.fallbacksite.com
# ...
</VirtualHost>
<VirtualHost *:8080>
ServerName www.specific-site.com:8080
ServerAlias *.specific-site.com
# ...
</VirtualHost>
Затем:
Это последний сценарий, который я пытаюсь реализовать с помощью nginx, но на сайте nginx.org ничего не говорится об этом. Я пробовал использовать подстановочные знаки, но он жалуется, что он недействителен.
Как бы вы сделали эту настройку в nginx? Заранее спасибо!
Если вы хотите, чтобы на запрос отвечал только конкретный виртуальный хост, вы можете просто сделать следующее. Добавьте (или измените) строку прослушивания, чтобы включить default_server
в конце. Это будет обслуживать этот виртуальный хост без изменения URL-адреса.
server {
# Add default_server for any unresolved request
listen 80 default_server;
}
Если вы хотите сделать перенаправление, когда пользователь нажимает hellohowareyou.com
вы можете добавить новый server
заблокировать и перенаправить на хост, который вы хотите использовать:
server {
# Add default_server only here for any unresolved request
listen 80 default_server;
server_name _;
rewrite ^ http://fallbacksite.com$request_uri permanent;
}