Apache Virtual Host Mix IP и доменные имена

357
Stefano Mtangoo

У меня есть случай, когда VPS работает на сервере Apache в главной папке www, нет vhosts. Теперь мне нужно разместить несколько vhosts, но мне нужно получить доступ к этому конкретному веб-приложению с основного IP-адреса. Другой vhost будет иметь другое доменное имя. Чтобы более подробно объяснить мою проблему, вот фиктивный пример

У меня есть сервер с IP X и запущенным приложением A без использования vhost. Некоторые приложения используют IP X для доступа к приложению A. Затем возникает необходимость добавить WebApp B и C с именами доменов app-b.comи app-c.com. Теперь мне нужно добавить два приложения, не мешая приложениям, которые обращаются к приложению A через IP X. Окончательное решение будет состоять в том, чтобы переместить приложение A в vhost и обновить приложения для доступа к нему черезapp-a.com, но это займет много времени, поэтому мне нужно короткое время. срок решения.

Любой указатель или помощь приветствуется

0
В чем конкретно ваша проблема с этим? [Официальные примеры] (https://httpd.apache.org/docs/2.4/vhosts/examples.html), кажется, соответствуют вашим потребностям? Seth 5 лет назад 0
Моя проблема в том, что у Apache есть доступ к одному приложению, скажем, набрав `http: // 192.168.1.1`. Теперь я хочу, чтобы это было так, но добавьте еще одно приложение, которое доступно только через `http: // app-b.com`, а затем другое приложение, доступное через` http: // app-c.com`. То есть `http: // 192.168.1.1` должен обращаться к приложению A,` http: // app-b.com`, приложению B и `http: // app-c.com`, приложению C. Теперь я не могу понять, как смешайте их даже после прочтения ссылки Stefano Mtangoo 5 лет назад 0

1 ответ на вопрос

2
Logan Bertram

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

Во-первых, откройте существующую конфигурацию сайта для приложения A, обычно по адресу /etc/apache2/sites-enabled. Поскольку вы хотите получить доступ к Приложению A только с IP-адресом, откройте конфигурацию сайта и отредактируйте ее, чтобы она выглядела следующим образом:

<VirtualHost 192.168.1.1> DocumentRoot "/www/app-a" ServerName 192.168.1.1 ServerAlias 192.* ServerAlias *:*  # Other directives here </VirtualHost> 

Затем создайте новую конфигурацию в папке, доступной для сайтов, обычно /etc/apache2/sites-availableтак:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/app-b.com.conf 

Далее откройте его:

sudo vim /etc/apache2/sites-available/app-b.com.conf 

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

<VirtualHost *:80> DocumentRoot "/www/app-b" ServerName www.app-b.com  # Other directives here </VirtualHost> 

Наконец, включите ваш сайт с помощью:

sudo a2ensite app-b.conf sudo service apache2 restart 

Повторите для приложения C.

В будущем, чтобы переместить приложение A на собственный vhost, измените

<VirtualHost 192.168.1.1> DocumentRoot "/www/app-a" ServerName 192.168.1.1 ServerAlias 192.* ServerAlias *:*  # Other directives here </VirtualHost> 

в

<VirtualHost *:80> DocumentRoot "/www/app-a" ServerName www.app-a.com  # Other directives here </VirtualHost> 
хорошо написан. Теперь все ясно. Я вижу, где я ошибался Stefano Mtangoo 5 лет назад 0
Я только что реализовал это и обнаружил, что`имеет приоритет над остальными, поэтому все запросы поступают на него (будь то` http: // app-b.com` или `http: // app-c.com`). Если я отключу этот сайт, другие будут работать нормально. У вас есть предложение? Stefano Mtangoo 5 лет назад 0
@StefanoMtangoo Apache загружает конфигурации в порядке каталогов, поэтому переименуйте файл конфигурации с поддержкой сайтов для сайта. Виртуальный хост, чтобы он был последним в очереди. Таким образом, Apache проверит наличие других подходящих виртуальных хостов, а затем обратится к IP-адресу, если не найдено ни одного имени. Было не совсем ясно, что это было необходимо, но это должно помочь сейчас. Logan Bertram 5 лет назад 1
Вы имеете в виду в основном конфиге Apache или я переименовываю в z-app-a.conf, так что последний по алфавиту? Я не очень хорошо это понимаю Stefano Mtangoo 5 лет назад 0
@StefanoMtangoo Второй. Переименуйте `/ etc / apache2 / sites-enabled / app-a.conf` в` / etc / apache2 / sites-enabled / z-app-a.conf`. Не должно быть никаких определений виртуальных хостов, явно написанных в вашей основной конфигурации apache. Logan Bertram 5 лет назад 1
понял. Никогда не знал, что Apache загружает конфиги по алфавиту. Откуда ты знаешь все эти вещи? Я искал везде, где мог, включая Apache2 Docs. да! Stefano Mtangoo 5 лет назад 0
@StefanoMtangoo Если вы не можете найти ответы на проблемы на компьютерах с Linux здесь или в документации, проверьте [Форум вопросов по Linux] (https://www.linuxquestions.org). Есть много подробных проблем и решений, из которых можно извлечь уроки. Logan Bertram 5 лет назад 1

Похожие вопросы