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>
Другие вопросы по тегам