Apache Virtual Host Mix IP и доменные имена
У меня есть случай, когда 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
, но это займет много времени, поэтому мне нужно краткосрочное решение.
Любой указатель или помощь приветствуется
1 ответ
Если у вас возникли проблемы с официальной документацией, давайте начнем с нуля:
Во-первых, откройте существующую конфигурацию сайта для приложения 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>