7 Май, 2016

Автоматические субдомены на Nginx

Если у вас много субдоменов или вы хотите создавать их автоматически, тогда имеет смысл создать одну универсальную конфигурацию, которая будет обслуживать все субдомены, направляя запросы посетителей в соответствующие каталоги.

Настройка DNS

В файле описания зоны или в настройках, которые вам предоставляет регистратор домена, создайте новый субдомен с именем * (звездочка) и IP веб-сервера, на котором будут находится все субдомены.

Настройка Nginx

Измените секцию server вашего сайта следующим образом:

server {
listen 80;

server_name example.com *.example.com;
root /var/www/example.com/$subdomain;
set $subdomain «»;
if ($host ~* ^([a-z0-9-\.]+)\.example.com$) {
set $subdomain $1;
}
if ($host ~* ^www.example.com$) {
set $subdomain «»;
}
}

Эта конфигурация работает вот так:

АДРЕС URLПУТЬ НА СЕРВЕРЕ
http://example.com//var/www/example.com/
http://www.example.com//var/www/example.com/
http://kirill.example.com//var/www/example.com/kirill/
http://kirill.abramov.example.com//var/www/example.com/kirill.abramov/

Если посетитель обратится на субдомен, каталог которого не существует, ему будет выдана стандартная ошибка 404 (Файл не найден).