by skid on Февраль 20, 2008
Чтобы полностью раскрыть тему с вайлдакрадами, я решил дать пару примеров создания днс зоны и виртуального хоста. Все нижеописанное нужно если на вашем сервере не стоит панель управления.
Итак приступим.
1. Начнем с добавления днс зоны domen.ru. Для этого открываем фаил named.conf (путь по умолчанию /etc/named.conf) и добавляем в конец:
zone “domen.ru” { type master; file “/etc/namedb/domen.ru.db”; };
теперь создаем фаил domen.ru.db ( и папку /etc/namedb если ее нет) следующего содержания:
[code='css']$TTL 14400
@ IN SOA ns1.domen.ru. root.domen.ru. (
2008020900
7200
3600
1209600
86400 )
domen.ru. 14400 IN NS ns1.domen.ru.
domen.ru. 14400 IN NS ns1.domen.ru.
domen.ru. 14400 IN A 192.168.0.1
ns2 14400 IN A 192.168.0.2
* 14400 IN A 192.168.0.1
domen.ru. 14400 IN MX 10 mail
domen.ru. 14400 IN TXT “v=spf1 a mx ip4:192.168.0.1 ?all”[/code]
Таким образом у нас появляется зона удовлетворяющая большинству потрдебностей. Теперь немного пройдемся по тому что у нас вышло:
Наша зона будет обновляться каждые четыре часа. В качестве днс серверов мы используем внутренние имена ns1.domen.ru и ns2.domen.ru которые ведут на наш сервер по адресам 192.168.0.1 и 192.168.0.2 соответсвенно.
2. Теперь переходим к созданию vhost-а. Открываем фаил httpd.conf (который чаще всего расположен в /etc/httpd/conf/httpd.conf) и в конце добавляем:
[code='css']
ServerName domen.ru
ServerAlias *.domen.ru
DocumentRoot /home/sites/domen.ru
[/code]
Здесь пояснения надеюсь не нужны. В случае вопросов обращайтесь в комментарии или пишите на skid собачка linux.md
by skid on Февраль 20, 2008
Порой возникает необходимость создания нескольких сотен поддоменов. Очевидно что создание их вручную займет не мало времени. Но есть способ сделать все намного проще 
Итак приступим.
Для того чтобы все заработало нам нужно будет три вещи:
- настроить зону в named-е
- настроить вхост в apach-е
- сделать правило через mod_rewrite
1. Первым делом нам нужно добавить “A” запись в фаил зоны:
* 14400 IN A 192.168.0.1
Где * будет означать, что запись будет резолвить абсолютно любой поддомен, 14400 время обновления зоны и 192.168.0.1, это ip адрес куда будут направленны поддомены.
Note: Стоит учитывать что named обрабатывает записи последовательно и любая запись добавленная после * не будет обработана.
2. Теперь переходим к конфигурировании веб сервера. Тут все проще, достаточно добавить директиву ServerAlias и все будет работать.
[code lang='css']
ServerAlias *.domen.ru
[/code]
Где * будет означать что вхост обрабатывает все поддомены и все они будут направлены в один и тот же DocumentRoot, а domen.ru это наш домен.
Note: Апач так же как и named читает конфигурационный фаил последовательно, поэтому любой поддомен добавленный ниже не будет обработан сервером.
3. Нам осталось создать правила mod_rewrite чтобы поддомен был направлен в папку домена. Создаем .htaccess следующего содержания:
[code lang='css']
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^(www\.)?domen\.ru$ [NC]
RewriteCond %{HTTP_HOST}—%{REQUEST_URI} ^([^\.]+)\.domen\.ru—/([^/]+)? [NC]
RewriteCond %1—%2 !^(.*)—\1$ [NC]
RewriteCond %{DOCUMENT_ROOT}/%1/ -d
RewriteRule ^(.*)?$ %1/$1 [QSA,PT]
[/code]
Теперь любая папка например http://domen.ru/papka1/ будет доступна по адресу http://papka1.domen.ru/
Но такой вариант не всегда приемлем, и иногда нужно чтобы поддомены находились в вложенной папке скажем в http://domen.ru/sub/papka1/. Для этого делаем другой .htaccess:
[code lang='css']
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.domen\.ru$ [NC]
RewriteCond %{HTTP_HOST} !^www\.domen\.ru$ [NC]
RewriteCond %{REQUEST_URI} !^/sub
RewriteRule ^(.*) %{HTTP_HOST}$1
RewriteRule ^(.*)\.domen\.ru(.*) /sub/$1$2
RewriteRule ^sub\.(.*) /sub/$1
[/code]
Практически все панели управления позволяют сделать подобные вещи через внутренние интерфейсы, так что проблем быть не должно.
P.S. Цените свое время и не теряя его на рутину.