Несколько виртуальных хостов Apache на одном и том же IP-адресе (разные URL-адреса)

У меня есть 2 виртуальных хоста (bugzilla и обзор доски) на сервере apache, расположенном внутри машины ubuntu.

У меня есть один внешний IP-адрес, который я могу использовать (с одним включенным портом), поэтому я не могу назначать разные имена хостов или разные порты для виртуальных хостов (поправьте меня, если я ошибаюсь)

Я хочу, чтобы пользователь мог написать следующее: http://ip-address:port/bugzilla а также для запросов к bugzilla и для запросов от http://ip-address:port/review перейти к доске отзывов.

Я пробовал обратное проксирование с первого виртуального хоста на второй, но это не сработало.

Конфигурационный файл bugzilla использует cgi, а совет по обзору использует wsgi.

Есть ли простой способ выполнить вышеизложенное?

Заранее спасибо.


person Jonathan    schedule 05.10.2011    source источник


Ответы (2)


Этого можно добиться с помощью директивы Alias.

Директива Alias ​​позволяет хранить документы в локальной файловой системе, отличной от DocumentRoot. URL-адреса с путем (%-decoded), начинающимся с URL-пути, будут сопоставлены с локальными файлами, начинающимися с пути к каталогу. URL-путь чувствителен к регистру даже в файловых системах, нечувствительных к регистру.

Псевдоним "/image" "/ftp/pub/image" Запрос для http://example.com/image/foo.gif заставит сервер вернуть файл /ftp/pub/image/foo.gif. Сопоставляются только полные сегменты пути, поэтому указанный выше псевдоним не будет соответствовать запросу http://example.com/imagefoo.gif. Для более сложного сопоставления с использованием регулярных выражений см. директиву AliasMatch.

Ваш файл виртуального хоста будет выглядеть так

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName ip-address:port/bugzilla 
    Alias "/bugz" "var/www/html/bugz"
    Alias "/wow" "var/www/html/wow"    
    DocumentRoot /path/to/yourwebsite  
</VirtualHost>

Достижение вашей цели иметь несколько виртуальных хостов на одном и том же IP.

Gif с изображением работы

введите здесь описание изображения

ПРИМЕЧАНИЕ

  • Это работает для Apache 2.4.18
  • GIF показывает конфигурацию VirtualHost с двумя разными записями виртуальных хостов. В одном из комментариев к этому ответу говорилось, что разные виртуальные хосты не работают. Но они есть, если имя сервера другое.
person Eduardo Dennis    schedule 26.09.2014
comment
Это вообще не работает. Работает только первая запись. Вторая запись дает ошибку Not Found. Обратите внимание, что если вы измените порядок объявления в файле httpd.conf, то запись, которая появится первой, начнет работать, а другая перестанет работать. - person Alexandre M; 14.04.2017
comment
Я твердо верю, что это никогда не срабатывало. Он не работает с Apache 2.2, выпущенным 12 лет назад. - person Alexandre M; 15.04.2017
comment
Вы когда-нибудь проверяли себя или просто записали, веря, что это работает? - person Alexandre M; 15.04.2017
comment
Нет, можешь оставить. Просто добавьте примечание, объясняющее, что это НЕ работает и не будет работать даже с 12-летними версиями Apache. В вашем вопросе явно используется один и тот же порт 80 для обоих виртуальных хостов, и он никогда не работал. Вы действительно беспокоитесь о моем отрицании? Я могу снова проголосовать, если это задевает ваши чувства. - person Alexandre M; 15.04.2017
comment
Ну вот. Теперь у вас есть мой голос, если это снова сделает вас счастливыми. Для будущих читателей: это никогда не сработает. Период. Если у вас разные порты, и ваш Apache прослушивает оба порта, он будет работать. - person Alexandre M; 15.04.2017
comment
Да, вообще-то он хочет использовать тот же порт, и поэтому ваш ответ не работает. Это никогда не работало, и, может быть, вы не знаете, о чем говорите? - person Alexandre M; 15.04.2017
comment
@BruceStackOverFlow Я отредактировал свой ответ, чтобы показать, что он работает с apache 2.4.8 и ubuntu 16.04, как вы сказали, у вас не работает. Если у вас есть какие-либо вопросы, дайте мне знать. - person Eduardo Dennis; 15.04.2017
comment
@Александр, посмотри на мой ответ ЭТО РАБОТАЕТ!!!!!! Кстати, мне пришлось скачать ubuntu, снова настроить apache и т. д. и т. д. только для вашего плюса: D сделал вам маленькую гифку на все случаи жизни ;) - person Eduardo Dennis; 15.04.2017

Вы можете изменить свои адреса, чтобы они были http://bugzilla.ip-address:port/ и http://review.ip-address:port/, а затем используйте директиву ServerName для использования правильного Виртуальный хост.

http://httpd.apache.org/docs/2.0/vhosts/examples.html

person Gonzalo Quero    schedule 05.10.2011
comment
Спасибо за ваш ответ, с моей стороны это кажется немного проблематичным... Внешний IP-адрес проходит через другой сервер и, к сожалению, только URL-адрес, начинающийся с ip-address::port/url-suffix передается на сервер apache. - person Jonathan; 05.10.2011