Заметка об использовании переменных в домене на web сервере nginx, или динамические поддомены.
Важно не забыть выше расположить статические поддомены, чтоб динамические их не перебивали.
Ну и примеры ниже:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| server {
server_name www.example.com;
location / {
proxy_pass 127.0.0.1:80;
}
}
server {
server_name ~^(?<dynamic>[a-z0-9\-]+)\.example.com$;
location / {
proxy_pass 127.0.0.1:80/sites/$dynamic$uri$is_args$args;
}
}
|
Вот ещё вариант:
Если у вас много поддоменов или вы хотите создавать их автоматически, тогда имеет смысл создать одну универсальную конфигурацию, которая будет обслуживать все поддомены, направляя запросы посетителей в соответствующие каталоги.
В первую очередь, необходимо настроить DNS: добавить поддомен с именем *
(звездочка, без кавычек) и направить его на IP вашего веб-сервера. Измените секцию server
вашего сайта следующим образом:
1
2
3
4
5
6
7
8
9
10
11
12
| 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
на имя вашего домена. Эта конфигурация работает следующим образом:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| Адрес 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/
|