Примеры настройки виртуальных хостов


Ниже приведены несколько примеров настройки виртуальных хостов с общим ip-адресом в Apache (так называемые name-based виртуальные хосты). Подробнее о типах виртуальных хостов в Apache.

Перед настройкой виртуальных хостов нам необходимо указать все TCP порты, которые мы собираемся использовать. Для этого нам необходимы директивы Listen и NameVirtualHost.

# Прослушиваем 80 порт
Listen 80
# Прослушиваем 443 порт
Listen 443
# Эта директива сообщает серверу, что на 80 порту
# будет использоваться name-based виртуальные хосты

NameVirtualHost *:80

Базовая настройка VirtualHost: порт 80, пользовательские логи

<VirtualHost *:80>
ServerName www.foo.com
# Чтобы данный хост обслуживал еще и другие имена,
# снимите комментарий со след. строки
# ServerAlias foo.com www.bar.com bar.com

DocumentRoot /var/www/www.foo.com/htdocs
CustomLog /var/log/apache/www.foo.com-access.log combined
ErrorLog /var/log/apache/www.foo.com-error.log
</VirtualHost>

Настройка на 80 порту с обслуживанием нескольких виртуальных хостов

<VirtualHost *:80>
ServerName www.foo.com
# Чтобы данный хост обслуживал еще и другие имена, снимите комментарий со след. строки
# ServerAlias foo.com www.bar.com bar.com

DocumentRoot /var/www/www.foo.com/htdocs
CustomLog /var/log/apache/www.foo.com-access.log combined
ErrorLog /var/log/apache/www.foo.com-error.log
</VirtualHost>
<VirtualHost *:80>
ServerName mail.foo.com
DocumentRoot /var/www/mail.foo.com/htdocs
CustomLog /var/log/apache/mail.foo.com-access.log combined
ErrorLog /var/log/apache/mail.foo.com-error.log
</VirtualHost>

Настройка виртуального хоста с пользовательскими логами и идентификацией

<VirtualHost *:80>
ServerName www.foo.com
DocumentRoot /var/www/www.foo.com/htdocs
CustomLog /var/log/apache/www.foo.com-access.log combined
ErrorLog /var/log/apache/www.foo.com-error.log
AuthUserFile /var/www/www.foo.com/.htpasswd
AuthType Basic
AuthName "Authorised Users Only"
Require valid-user
</VirtualHost>

Виртуальный хост с SSL и пользовательскими логами

<VirtualHost _default_:443>
# Только один виртуальный хост для этого порта!
# Name-based виртуальные хосты не работают с SSL

ServerName www.foo.com
DocumentRoot /var/www/www.foo.com/htdocs
CustomLog /var/log/apache/www.foo.com-access.log combined
ErrorLog /var/log/apache/www.foo.com-error.log
SSLEngine On
</VirtualHost>
Источник: wiki.apache.org

These icons link to social bookmarking sites where readers can share and discover new web pages.
  • News2.ru
  • NewsLand.ru
  • del.icio.us
  • BobrDobr.ru
  • Ma.gnolia
  • Digg
  • Reddit
  • Technorati
  • Slashdot
  • Netscape
  • DZone
  • ThisNext
  • Furl
  • YahooMyWeb
Опубликовано в: Советы Декабрь 21, 2006

28 Комментариев »

  1. мдя чувствую что этот блог надолго пропишетса в моих букмаках оченб полезные материалы здесь присутствуют

    Комментарий от seo — Декабрь 22, 2006 @ 3:43 am

  2. Парни, откройте для себя mod_macro :)

    ServerAdmin $webmaster
    ServerName $domain
    DocumentRoot $docroot/htdocs
    ErrorLog $docroot/logs/error_log
    CustomLog $docroot/logs/access_log combined
    Options Indexes FollowSymLinks MultiViews Includes
    AllowOverride All
    Order allow,deny
    Allow from all
    Options Indexes FollowSymLinks MultiViews Includes
    AllowOverride All
    #-------------------------------------------------------------------------------
    ScriptAlias /cgi-bin/ "$docroot/cgi-bin/"
    Alias /perl/ $docroot/perl/
    AllowOverride All
    Options +ExecCGI +FollowSymLinks
    Order allow,deny
    Allow from all
    #-------------------------------------------------------------------------------
    Use static_area $domain $docroot $webmaster
    Use execute_area $docroot

    Потом просто:

    Use vhost aa.bb.cc.dd xxx.tomsk.ru /home/httpd/xxx.tomsk.ru admin@xxx.tomsk.su

    Комментарий от Alexey A. Ukhov — Декабрь 22, 2006 @ 11:02 am

  3. блин. вырезало половину
    вот тут примеры есть
    http://www.cri.ensmp.fr/~coelho/mod_macro/#examples

    Комментарий от Alexey A. Ukhov — Декабрь 22, 2006 @ 11:03 am

  4. Alexey, пришли мне конфиг на info(at)apachedev.ru - добавлю в нормальном виде!

    Комментарий от Администратор — Декабрь 22, 2006 @ 3:05 pm

  5. > ..чувствую что этот блог надолго пропишетса в моих букмаках…
    Имхо RSS и удобнее и вспоминаешь про нужные сайты чаще :)

    Комментарий от Администратор — Декабрь 22, 2006 @ 3:09 pm

  6. ИМХО - вместо mod_macro лучше таки использовать нормальный макропроцессор. M4, например:
    vhosts.conf.m4:

    include(`rules.m4')dnl
    vhost(example.com, user)

    Получаем конфиг:

    m4 vhosts.conf.m4 > vhosts.conf

    Где rules.m4:

    define(`vhost',`dnl
    ServerName $1
    ServerAlias www.$1
    DocumentRoot /home/$2/$1/www
    AllowOverride All
    Options +Includes
    SuexecUserGroup $2 $2
    ScriptAlias /cgi-bin/ /home/$2/$1/cgi-bin/
    CustomLog logs/$1/access_log combined
    ErrorLog logs/$1/error_log
    php_admin_value open_basedir "/home/$2/"
    php_admin_value doc_root "/home/$2/$1"
    php_admin_value upload_tmp_dir "/home/$2/$1/tmp"
    php_value session.save_path "/home/$2/$1/tmp"
    # Manual part for $1:
    sinclude(`$1.custom')dnl
    ')dnl

    Комментарий от myhand — Декабрь 30, 2006 @ 7:46 pm

  7. 2myhand: и чем лучше-то?
    как минимум добавляется одно телодвижение при добавлении хоста

    Комментарий от auk — Январь 5, 2007 @ 9:33 pm

  8. auk: Перегенерация конфига из m4-файла? - Несложно Makefile сделать который это автоматизирует, наряду с тестированием и перезагрузкой конфига.
    m4 полноценный макропроцессор, условную логику позволяет, например.

    Комментарий от myhand — Январь 7, 2007 @ 1:50 am

  9. самой интересное - не работает рецептик….

    Комментарий от хм не работает... — Январь 22, 2007 @ 12:54 pm

  10. Вопрос:
    Если
    # Только один виртуальный хост для этого порта!
    # Name-based виртуальные хосты не работают с SSL
    то тогда как SSL организован у провайдера, т.е. на одном ip есть несколько сайтов (доменов второго и третьего уровня), каждый из которых работает через https?

    Комментарий от user — Март 15, 2007 @ 2:00 pm

  11. # Только один виртуальный хост для этого порта!
    # Name-based виртуальные хосты не работают с SSL
    ServerName www.foo.com
    DocumentRoot /var/www/www.foo.com/htdocs
    CustomLog /var/log/apache/www.foo.com-access.log combined
    ErrorLog /var/log/apache/www.foo.com-error.log
    SSLEngine On
    Не пойму одного, везде пишется что SSL может быть только один на IP:PORT адресе, но у меня работает на 1 IP:PORT любое количество доменов, хоть указывать на один сертификат хоть создавать каждому свой сертификат.

    Комментарий от Evgeniy — Июль 28, 2007 @ 3:23 pm

  12. Немогу только динамические линки на сертификаты сделать что бы при добавлении удалении хоста Апача не передёргивать.

    Комментарий от Evgeniy — Июль 28, 2007 @ 3:27 pm

  13. А может кто знает как организовать динамически конфигурируемый виртуальный хостинг? Я слышал что это можно сделать при помощи mod_vhost_alias вот только не знаю как. Может кто знает?

    Комментарий от Cast — Ноябрь 13, 2007 @ 10:38 pm

  14. Блин спасибо БОЛЬШОЕ! Все получилось! Респект!!!
    __________________
    http://www.foursea.ru/

    Комментарий от андрюха — Август 31, 2008 @ 12:02 am

  15. Вот тут хорошо описано про настройку виртуальных хостов apache http://web-linux.ru/?p=56

    Комментарий от Михаил — Октябрь 13, 2008 @ 10:48 am

  16. Михаилу спасибо за линк.

    Комментарий от Геннадий — Ноябрь 5, 2008 @ 1:56 pm

  17. Так и не разобрался в этои теме до конца.

    Комментарий от Феликс — Ноябрь 5, 2008 @ 1:57 pm

  18. Ну уж нет я лучше заплачу разбирающемуся в этом человеку чем себе голову ломать.

    Комментарий от Мартин — Ноябрь 8, 2008 @ 2:21 am

  19. Люди помогите!
    В общем настроил все, но выходит ошибка Bad request! Error 400!
    но когда к нужному хосту в адресной строке добавляеш index то работает нормальнО! тоесть
    xxx.mydomain.com выдает ошибку
    xxx.mydomain.com/index.php все работает нормальнО!
    Неподскажите что и где я не так сделал примерно!! Ответ на e-mail

    Комментарий от Димко — Декабрь 21, 2008 @ 9:47 pm

  20. Спасибо, оч помогло)))))))+1000000000 ;) ))

    Комментарий от Максим — Декабрь 26, 2008 @ 4:26 pm

  21. ServerName mail.foo.com
    DocumentRoot /var/www/mail.foo.com/htdocs
    CustomLog /var/log/apache/mail.foo.com-access.log combined
    ErrorLog /var/log/apache/mail.foo.com-error.log
    так проще

    Комментарий от Хичкок — Январь 19, 2009 @ 1:43 am

  22. Не подскажите - как порты прослушивать ?

    Комментарий от Georg — Январь 20, 2009 @ 1:05 am

  23. Georg , есть специальный софт для таких дел

    Комментарий от Альберт Эйнштейн — Январь 21, 2009 @ 2:30 am

  24. Благодарю за подробный мануал по виртуальным хостам, будем попробовать

    Комментарий от PostPortal — Январь 22, 2009 @ 1:36 am

  25. Подскажите почему у меня при открытии виртуально хоста предлогает сохранить мне index.cgi. Видимо apache не хочет обрабатывать скрипты. Раньше этот сайт лежал не на виртуальном хосте и все работало, сейчас на виртуальном не хочет. Помогите…

    Комментарий от kerno — Март 4, 2009 @ 6:04 am

  26. Из всех примеров знал только об одном, особенно впечатлил метод настройки виртуального хоста с пользовательскими логами и идентификацией

    Комментарий от Рудольф — Март 9, 2009 @ 10:47 pm

  27. Довольно актуальная статья.

    Комментарий от postnews — Март 14, 2009 @ 10:42 am

  28. Я именно так и делал на своем серваке как расписал Alexey A. Ukhov

    Комментарий от Gsm-сигнализация — Апрель 8, 2009 @ 9:54 pm

Оставить комментарий

You must be logged in to post a comment.

Работает на WordPress