Очень часто требуется сделать так, чтобы один веб-сервер обслуживал несколько доменных имен. Например, вы имеете сервер разработки, на котором хостятся необходимые вам приложения и сайты. Вы, конечно, можете разделять сервисы по портам, придумывая каждый раз новую цифру (web:20020, web:20056, и т.д.) Когда-нибудь вам станет неудобно запоминать множество цифр и захочется видеть в адресной строке осмысленные доменные имена. К тому же, веб-приложения традиционно должны запускаться по 80 порту. Apache может позволить нам поделить этот порт между различными приложениями/доменными именами. Таким образом, мы подошли к настройке доступа к веб-серверу по нескольким доменным именам.
В интернете есть множество инструкций на эту тему, не все они понятные и пригодные. Я просто приведу пример настроек, как это сделано у меня.
ServerName web NameVirtualHost 10.0.1.1:80 Listen 10.0.1.1:80 # single-word domain <VirtualHost web:80> ServerName web ServerAlias web.domain.ru ProxyPass / http://127.0.0.1:20060/ min=5 ttl=120 keepalive=On timeout=20 ProxyPassReverse / http://127.0.0.1:20060/ </VirtualHost> # domain.ru <VirtualHost domain.ru:80> ServerName domain.ru ProxyPreserveHost On ProxyPass / http://127.0.0.1:20020/ min=5 ttl=120 keepalive=On timeout=20 ProxyPassReverse / http://127.0.0.1:20020/ </VirtualHost> # domain.com <VirtualHost domain.com:80> ServerName domain.com ProxyPreserveHost On ProxyPass / http://127.0.0.1:20019/ min=5 ttl=120 keepalive=On timeout=20 ProxyPassReverse / http://127.0.0.1:20019/ </VirtualHost>
Обратите внимание, один сервер обслуживает 4 доменных имени: domain.ru, domain.com, web и web.domain.ru. Если зайти на web или web.domain.ru, откроется один и тот же ресурс, так как они указаны как алиасы. По другим двум доменам откроются соответствующие приложения, к которым я пробросил прокси. В общем-то, ничего сложного, а нюансы всегда можно посмотреть в документации к Apache.