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

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

В первую очередь, необходимо настроить DNS: добавить субдомен с именем ‘*’ (звездочка, без кавычек) и направить его на IP вашего веб-сервера. Немного подробнее об этом написано на странице: Apache: Автоматические субдомены.

Измените секцию 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 "";
    }
}

Не забудьте поменять example.com на имя вашего домена.

Эта конфигурация работает следующим образом:

Адрес URL Путь на сервере
http://example.com/ /var/www/example.com/
http://www.example.com/ /var/www/example.com/
http://vasya.example.com/ /var/www/example.com/vasya/
http://vasya.ivanov.example.com/ /var/www/example.com/vasya.ivanov/

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