Apache не работает виртуальный хостинг

Добрый день. Вопрос такой, есть сервер дебиан, апач, мускул, на нем хосты.

Решил на один из хостов поставить ssl для доступа по https. Получилось:

Все хорошо, протокол поднялся и все работает. Но недавно заметил что так же протокол срабатывает и на другие домены, у которых нет ни ssl ни включенного https.

На сколько я понимаю причина в том что на 443 -й откликается сайт с ssl по https, но домен то не его, то есть https ://site.com должен отвечать, а https ://site2.com не должен так как у него нет сертификата.

То есть когда перехожу по https ://site2.com открывается контент первого сайта но домен в адресе https ://site2.com.

Собственно вопрос как правильно настроить, https так что бы другие сайты без ssl не отвечали на https запросы?

Дело в том, что при подключении через SSL сначала устанавливается защищенное соединение по сертификату, и только потом происходит передача запроса, в том числе заголовка Host, указывающего, к какому сайту идет обращение. Поэтому если у вас на одном IP-адресе и порту висит несколько сайтов, все они будут открываться по сертификату, который настроен для этого IP/порта.

Вам необходимо явно указать, какой виртуальный хост отвечает на порту 443 (SSL), его имя должно быть таким же, как указано в сертификате. А для остальных виртуальных хостов явно прописать, что они должны слушать только порт 80.

Кроме того, важно учесть нюанс, что если в Apache пришел запрос на какой-то IP/порт с указанием заголовка Host: XXX , а он не смог найти для него виртуальный хост с ServerName XXX или ServerAlias XXX , то он передаст запрос на обработку в первый виртуальный хост, подходящий по IP/порту. Поэтому если вы хотите, чтобы при запросе несуществующего на данном IP/порту хоста отдавался не сайт, а какая-то заглушка, вам необходимо сконфигурировать VirtualHost с этой заглушкой и поставить ее раньше всех других VirtualHost на этом IP/порту.

Не указывайте виртуальные хосты без указания порта.

Если используется несколько сертификатов SSL для разных сайтов, их нужно разнести на разные IP, например:

Ну или на разные порты (443, 1443, 2443 и т. д.), но это не очень удобно.

Если вы не хотите, чтобы по запросу несуществующего сайта отдавался контент первого VirtualHost , подошедшего по IP/порту, сделайте на этом IP/порту заглушку и разместите ее перед остальными виртуальными хостами:

Get the latest tutorials on SysAdmin and open source topics.

Scalable compute services.

Worry-free setup & maintenance.

Run managed Kubernetes clusters.

Easily distribute traffic.

Deploy pre-built applications.

DevOps and development guides

Development and systems Q&A

Веб-сервер Apache является самым популярным средством размещения веб-контента в интернете. На его счету более половины всех действующих веб-сайтов. Это очень мощный и гибкий инструмент.

Apache разделяет свои функциональные возможности и компоненты на отдельные части, которые могут быть настроены и сконфигурированы независимо друг от друга. Базовая часть, которая отвечает за отдельный сайт или домен называется виртуальным хостом ( virtual host ).

Эта система позволяет администратору использовать один сервер, чтобы раздавать несколько сайтов используя один интерфейс или IP. Это удобно для тех, кто хочет использовать один VPS для хранения нескольких сайтов.

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

В этом руководстве мы расскажем, как настроить виртуальные хосты в Apache на VPS с Ubuntu 14.04. В процессе вы узнаете, как отображать разный контент для разных пользователей в зависимости от того, какой домен они запрашивают.

Перед тем, как приступать, вам необходимо создать не-рутового пользователя, как описано в шагах 1-4.

Также у вас должен быть установлен Apache, чтобы проделать описываемые ниже шаги. Если он еще не установлен, вы можете сделать это при помощи команды apt-get :

После завершения этих шагов, мы можем начать настройку виртуальных хостов.

В этом руководстве мы создадим виртуальный хост для доменов example.com и test.com . Мы будет ссылаться на них в руководстве, однако вам следует заменить их на свои домены при настройке ваших виртуальных хостов.

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

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

Первый шаг, который мы собираемся предпринять, это создать структуру директорий, содержащую данные сайта, которые будут отображаться посетителям.

Наш document root (корневой каталог — директория верхнего уровня, которую просматривает Apache в поисках контента для отображения) будет настроен на использование директорий внутри директории /var/www . Здесь мы создадим директории для обоих виртуальных хостов, которые мы планируем сделать в этом руководстве.

В каждой из этих директорий мы создадим вложенную директорию public_html , которая будет содержать реальные файлы. Это дает нам некоторую гибкость в плане хранения контента.

Например, для наших сайтов мы создадим директории следующим образом:

Текст, выделенный красным, представляет собой доменные имена сайтов, которые мы хотим отображать с помощью нашего VPS.

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

Переменная $USER содержит имя пользователя, под которым вы залогинены в текущий момент. Теперь текущий пользователь владеет директориями public_html , в которых мы будем хранить контент.

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

Теперь ваш веб-сервер должен иметь разрешения, необходимые для отображения контента. Кроме того, теперь ваш пользователь имеет возможность создавать контент в необходимых директорий.

Наша структура директорий готова. Давайте создадим какой-нибудь контент для отображения посетителям наших сайтов.

Мы делаем это просто для демонстрации, потому страницы будет очень простыми. Мы собираемся создать по странице index.html для каждого сайта.

Давайте начнем с example.com . Мы можем создать и открыть файл index.html в редакторе, введя команду:

В этом файле создайте простой HTML-документ, который показывает, к какому сайту он относится. Наш файл выглядит следующим образом:

Когда закончите, сохраните и закройте файл.

Вы может скопировать файл, чтобы использовать его как основу для второго сайта:

После этого вы можете открыть файл и исправить его содержимое:

Сохраните и закройте этот файл. Теперь у вас есть страницы, необходимые для проверки конфигурации виртуальных хостов.

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

По умолчанию, Apache имеет файл виртуального хоста 000-default.conf , который мы можем использовать в качестве отправной точки. Мы собираемся скопировать его, чтобы создать файлы виртуального хоста для каждого из наших доменов.

Мы начнем с одного домена, сконфигурируем его, скопируем для другого домена, и затем снова сделаем необходимые правки. Конфигурация Ubuntu по-умолчанию требует, чтобы каждый файл виртуального хоста заканчивался расширением .conf .

Начнем с копирования файла для первого домена:

Откройте новый файл в редакторе с root-правами:

Файл будет похож на этот (мы удалили комментарии, чтобы сделать его более читабельным):

Как видите, файл совсем небольшой. Мы поправим его для нашего первого домена и добавим некоторые новые директивы. Эта секция конфигурации виртуального хоста относится к любом запросам, которые сделаны по 80 порту (порт по-умолчанию для HTTP).

Прежде всего, мы должны изменить директиву ServerAdmin на адрес электронной почты, на который администратор сайта будет получать электронные письма.

Затем мы должны добавить две новые директивы. Первая, ServerName , устанавливает основной домен, который должен соответствовать названию виртуального хоста. Это должно быть ваше доменное имя. Вторая, ServerAlias , определяет другие имена, которые должны интерпретироваться так, как будто это основной домен. Это удобно для использования дополнительных доменных имен, например, с использованием www :

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

Теперь наш файл виртуального хоста должен выглядеть следующим образом:

Сохраните и закройте файл.

Теперь, когда у нас есть готовый первый виртуальный хост, мы можем создать второй, скопировав файл и поправив его там, где это необходимо.

Откройте новый файл в редакторе с правами root-пользователя:

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

Сохраните и закройте файл после внесения правок.

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

Мы можем использовать утилиту a2ensite для включения каждого из наших сайтов следующим образом:

После завершения необходимо перезапустить Apache, чтобы изменения вступили в силу:

Скорее всего, вы получите сообщение, похожее на это:

Это сообщение безобидно и не влияет на наш сайт.

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

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

Убедитесь, что дальнейшие шаги вы будете проделывать на вашем локальном компьютере, а не на VPS сервере. Вам необходимо знать пароль администратора или быть членом группы администраторов.

Если вы используете компьютер с Mac или Linux, вы можете редактировать локальный файл с правами администратора, введя команду:

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

Вам необходимо добавить в файл публичный IP-адрес вашего VPS сервера и, следом, доменное имя, по которому вы хотите обращаться к этому VPS.

Для доменов, используемых в этом руководстве, предположим, что IP-адрес нашего VPS 111.111.111.111 . В этом случае мы можем добавить следующие строки в конец файла hosts :

В результате этого любые запросы к example.com и test.com с нашего компьютера будут перенаправляться на наш сервер по адресу 111.111.111.111 . Это удобно для проверки правильности настройки наших виртуальных хостов для случая, когда мы не являемся реальными владельцами этих доменных имен.

Сохраните и закройте файл.

Теперь, когда ваши виртуальные хосты сконфигурированы, вы можете легко протестировать работоспособность, перейдя в браузере по ранее настроенным адресам:

Вы должны увидеть похожую страницу:

Аналогично, вы можете зайти на вторую страницу:

Вы увидите файл, созданный для второго сайта:

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

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

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

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

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

При подготовки статьи использованы следующие источники:

http://vseohostinge.ru/uroki-sovety/manualy-po-2domainsru/registrator-2domains-znakomstvo-s-panelyu-upravleniya

http://pupi-boy.ru/domen-hosting/perenos-domena-ru-k-drugomu-registratoru.html

http://wordpressmania.ru/kak-prikrepit-domen-v-2domains-k-hostingu-beget/

http://richhost.biz/kak-privyazat-domen-k-hostingu.html

http://www.reg.ru/support/hosting-i-servery/sajty-i-domeny/kak-nastroit-dns/kak-privyazat-domen-k-hostingu

http://webformyself.com/kak-privyazat-domen-k-xostingu/

http://wrart.ru/vidy-zarabotka/3-mesyatsa-besplatnogo-hostinga-ot-mchost.html

http://seoslim.ru/host/xosting-3-mesyaca-besplatno.html

http://ideafox.ru/pro-blog/3-month-hosting.html

http://wrart.ru/vidy-zarabotka/3-mesyatsa-besplatnogo-hostinga-ot-mchost.html

http://online-elite.ru/zarabotok-online/saytostroyeniye/razmestit-neskolko-saitov

http://www.garagebiz.ru/view/skolko_sajtov_mozhno_razmestit_na_odnom_hostinge/seo

http://online-elite.ru/zarabotok-online/saytostroyeniye/razmestit-neskolko-saitov

http://lessons-business.ru/dva-domena-na-odnom-khostinge.html

http://ru.hostings.info/hostings/rating/testovyj-period-hosting

http://start-luck.ru/sozdanie-sayta/khostingov-s-testovym-periodom.html

http://denezhnye-ruchejki.ru/301-redirekt-na-hostinge-offerhost/

http://fb.ru/article/242507/kak-nastroit-redirekt-cherez-htaccess-pravilnaya-nastroy-kak-redirekta-v-joomla-i-drugih-cms

http://www.myarena.ru/

http://ourservers.ru/

http://www.hostinger.ru/rukovodstva/kak-ispravit-oshibku-403-forbidden-error

http://komp.guru/oshibki/kak-ispravit-oshibku-403-kotoraya-zapreshhaet-dostup-k-sajtu.html

http://www.hostinger.ru/rukovodstva/kak-ispravit-oshibku-403-forbidden-error

http://sdelaicomp.ru/nastrojka-sistemy/403-forbidden-chto-eto-i-kak-ispravit.html

http://www.reg.ru/support/hosting-i-servery/sajty-i-domeny/moy-sayt-ne-rabotaet/oshibka-403

http://toster.ru/q/477262

http://www.hostinger.ru/rukovodstva/413-request-entity-too-large/

http://ruphp.com/entity-too-large-413.html

http://socpravo.ru/xosting-za-kopejki-50-rublej-v-mesyac-dlya-sajta-vizitki/

http://ru.hostings.info/hostings/rating/deshevyj-hosting

http://www.gameserverkings.com/games/7-days-to-die-server-hosting/

http://www.gtxgaming.co.uk/7-days-die-server-hosting/

http://www.gtxgaming.co.uk/7-days-die-server-hosting/

http://www.gameserverkings.com/games/7-days-to-die-server-hosting/

http://www.reg.ru/support/domains/dns_servery_i_nastroika_zony/Nastroika-zony/kak-dobavit-zapis-a-poddomen

http://www.reg.ru/support/domains/dns_servery_i_nastroika_zony/Nastroika-zony/nastroika-resursnyh-zapisei-dlya-domena

http://timeweb.com/ru/help/pages/viewpage.action?pageId=4358480

http://romanchueshov.ru/bez-rubriki/kak-privyazat-domen-k-hostingu-timeweb.html

http://lifehacki.ru/oshibka-access-denied-for-user-rootlocalhost-using-password-yes-i-no/

http://qaru.site/questions/218155/1045-access-denied-for-user-rootlocalhost-using-password-yes

http://www.1gb.ua/wiki/index.php?title=%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_%D0%91%D0%94_mySQL_%D0%B8%D0%B7_Microsoft_Access

http://webformyself.com/kak-sozdat-bazu-dannyx-na-xostinge/

http://helpx.adobe.com/ru/muse/using/uploading-site-third-party-hosting.html

http://rusmuse.ru/archives/1453

http://helpx.adobe.com/ru/muse/using/uploading-site-third-party-hosting.html

http://rusmuse.ru/archives/1453

http://helpx.adobe.com/ru/muse/using/uploading-site-third-party-hosting.html

http://rusmuse.ru/archives/1453

http://helpx.adobe.com/ru/muse/using/uploading-site-third-party-hosting.html

http://rusmuse.ru/archives/1453

http://helpx.adobe.com/ru/muse/using/uploading-site-third-party-hosting.html

http://rusmuse.ru/archives/1453

http://rusmuse.ru/archives/1453

http://creatura.club/lessons/hosting/kak-poluchit-besplatnyy-hosting-i-domen-dlya-adobe-muse-r57/

http://helpx.adobe.com/ru/muse/using/uploading-site-third-party-hosting.html

http://rusmuse.ru/archives/1453

http://rusmuse.ru/archives/1453

http://helpx.adobe.com/ru/muse/using/uploading-site-third-party-hosting.html

http://helpx.adobe.com/ru/muse/using/uploading-site-third-party-hosting.html

http://muwilab.ru/vozmojno-li-sajt-na-muse-perenesti-na-druguyu-platformu.html

http://htmleditors.ru/List3B/adobe_muse_help/publish.html

http://helpx.adobe.com/ru/muse/using/publishing-websites.html

http://helpx.adobe.com/ru/muse/using/uploading-site-third-party-hosting.html

http://rusmuse.ru/archives/1453

http://creatura.club/lessons/hosting/kak-poluchit-besplatnyy-hosting-i-domen-dlya-adobe-muse-r57/

http://rusmuse.ru/archives/1453

http://today-life.ru/zarabotok-v-seti/kak-posmotret-doxod-na-youtube.html

http://suay.ru/?p=221

http://searchengines.guru/archive/index.php/t-800238.html

http://suay.ru/?p=221

http://searchengines.guru/archive/index.php/t-406016.html

http://lpgenerator.ru/blog/2012/11/15/privyazka-domena-i-poddomena-v-paneli-agavaru/

http://tods-blog.com.ua/software/ai-bolit/

http://revisium.com/ai/faq.php

http://forum.php.su/topic.php?forum=40&topic=4423

http://qaru.site/questions/459285/delete-ajax-works-in-localhost-but-doesnt-in-production-hosting

http://takprostotak.ru/joomla/kak-perenesti-sajt-sozdanyj-na-cms-joomla-bekap-sajta-akeeba-backup.html

http://sitogon.ru/dlya-tech-kto-delaet-internet/akeeba-backup-rezervnoe-kopirovanie-i-perenos-saytov-na-joomla

http://normalnet.ru/sajt-na-joomla/perenos-joomla-3-na-hosting.html

http://www.inforeks.ru/cms/27-joomla-na-server.html

http://takprostotak.ru/joomla/kak-perenesti-sajt-sozdanyj-na-cms-joomla-bekap-sajta-akeeba-backup.html

http://sitogon.ru/dlya-tech-kto-delaet-internet/akeeba-backup-rezervnoe-kopirovanie-i-perenos-saytov-na-joomla

http://normalnet.ru/sajt-na-joomla/perenos-joomla-3-na-hosting.html

http://www.inforeks.ru/cms/27-joomla-na-server.html

http://www.inforeks.ru/cms/27-joomla-na-server.html

http://joofaq.ru/sozdanie-sayta-na-joomla-1-5/ustanovka-i-nastroyka/20-perenos-sayta-joomla-s-lokalnogo-servera-na-virtualniy-chosting

http://joomla.center/baza-joomla/zaschita-joomla/akeeba-backup-manual

http://takprostotak.ru/joomla/kak-perenesti-sajt-sozdanyj-na-cms-joomla-bekap-sajta-akeeba-backup.html

http://takprostotak.ru/joomla/kak-perenesti-sajt-sozdanyj-na-cms-joomla-bekap-sajta-akeeba-backup.html

http://joofaq.ru/sozdanie-sayta-na-joomla-1-5/ustanovka-i-nastroyka/20-perenos-sayta-joomla-s-lokalnogo-servera-na-virtualniy-chosting

http://normalnet.ru/sajt-na-joomla/perenos-joomla-3-na-hosting.html

http://www.inforeks.ru/cms/27-joomla-na-server.html

http://www.amiro.ru/forum/hosting-for-amiro-cms/peremestit-na-drugoj-hosting

http://unihost.com/help/ru/how-to-move-amiro-cms-to-web-hosting/

http://www.hostinger.ru/besplatnyj-hosting

http://ru.hostings.info/hostings/rating/free-hosting

http://www.hostinger.ru/besplatnyj-hosting

http://ru.hostings.info/hostings/rating/free-hosting

http://koskomp.ru/sozdanie-saytov/besplatnye-domeny-dlya-sayta-2-i-3-urovnya-ru-tk-com/

http://oblomow.ru/free-domains/

http://ktonanovenkogo.ru/vokrug-da-okolo/hosting/varianty-besplatnyx-xostingov-dlya-vashix-sajtov-bez-navyazchivoj-reklamy-no-s-podderzhkoj-yazyka-php-i-baz-dannyx-mysql.html

http://www.redz.ru/hosting/free/

http://ru.stackoverflow.com/questions/589053/apache-ssl-https-%D0%B4%D0%BB%D1%8F-%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D1%85-%D1%85%D0%BE%D1%81%D1%82%D0%BE%D0%B2

http://www.digitalocean.com/community/tutorials/apache-ubuntu-14-04-lts-ru