#apache #virtualhost #bugzilla #review-board
#apache #virtualhost #bugzilla #обзор-доска
Вопрос:
У меня есть 2 виртуальных хоста (bugzilla и board review) на сервере apache, расположенном внутри компьютера ubuntu.
У меня есть один внешний IP-адрес, который я могу использовать (с включенным одним портом), поэтому я не могу назначить разные имена хостов или разные порты для виртуальных хостов.(поправьте меня, если я ошибаюсь)
Я хочу, чтобы пользователь мог написать следующее: http://ip-address:port/bugzilla и для запросов на отправку в bugzilla, и для запросов от http://ip-address:port/review чтобы обратиться в наблюдательный совет.
Я попробовал обратное проксирование с первого виртуального хоста на второй, но это не сработало.
Файл bugzilla conf использует cgi, а панель обзора использует wsgi.
Есть ли простой способ выполнить вышеуказанное?
Заранее спасибо.
Ответ №1:
Вы можете добиться этого с помощью директивы Alias .
Директива Alias позволяет хранить документы в локальной файловой системе, отличной от DocumentRoot . URL-адреса с (%-декодированным) путем, начинающимся с 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
конфигурация с двумя разными записями виртуального хоста. В одном из комментариев к этому ответу говорилось, что разные виртуальные хосты не работают. Но они это делают, если имя сервера отличается.
Комментарии:
1. Это вообще не работает. Работает только первая запись. Вторая запись выдает ошибку «Не найдено». Пожалуйста, обратите внимание, что если вы измените порядок объявления внутри файла httpd.conf, то запись, которая теперь появляется первой, начинает работать, а другая перестает работать.
2. Я твердо верю, что это никогда не работало. Это не работает с Apache 2.2, который был выпущен 12 лет назад.
3. Вы когда-нибудь проверяли себя, или вы просто записали это, полагая, что это работает?
4. Нет, вы можете оставить его. Просто добавляю примечание, объясняющее, что оно НЕ работает и не будет работать даже с 12-летними версиями Apache. В вашем вопросе явно используется один и тот же порт 80 для обоих виртуальных хостов, и он никогда не работал. Вы действительно беспокоитесь о моем понижении? Я могу снова проголосовать, если это задевает ваши чувства.
5. @Alexandre посмотри на мой ответ, ОН РАБОТАЕТ!!!!!! Кстати, мне пришлось загрузить ubuntu, снова настроить apache и т. Д. и т. Д. Просто для вашего одобрения: D сделал вам небольшой gif-файл для всего;)
Ответ №2:
Вы можете изменить свои адреса, чтобы они http://bugzilla.ip-address:port / и http://review.ip-address:port / а затем используйте директиву ServerName, чтобы использовать правильный VirtualHost.
Комментарии:
1. Спасибо за ваш ответ, с моей стороны это кажется немного проблематичным… Внешний IP-адрес проходит через другой сервер, и, к сожалению, на сервер apache передается только URL-адрес, начинающийся с ip-address::port /url-suffix .