Apache VirtualHost не соответствует

У меня есть экземпляр веб-сервера apache, и мне нужно сопоставить URL следующим образом:

  1. URL с b2b.domain.eu должны быть проксированы на другой сервер 10.1.0.100 [ЭТО РАБОТАЕТ]

  2. URL-адрес из b2b.domain.eu/api должен быть проксирован в приложение api tomcat [ ЭТО РАБОТАЕТ]

  3. URL из b2b.domain.eu/decoder должен быть проксирован в приложение декодера Tomcat [ЭТО РАБОТАЕТ]

  4. Для URL /App1/Shop/home.aspx нам нужно выполнить выходной фильтр [ЭТО РАБОТАЕТ]

  5. www.domain.eu и web.domain.eu должны обслуживать веб-сайт wordpress [IT НЕ РАБОТАЕТ] -> Вместо этого приложение переходит в приложение 1, которое, кажется, используется по умолчанию

Ниже представлена ​​моя фактическая конфигурация. Я безуспешно пытался изменить его по-разному, изменить порядок и т. Д. Кто-нибудь может помочь мне понять, как достичь ожидаемого поведения?

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

<VirtualHost *:80>
ServerName 10.1.0.101
ServerAlias b2b.domain.eu

ProxyRequests Off
ProxyPreserveHost On

ExtFilterDefine filter1 mode=output \
cmd="/var/www/cgi-bin/filter.pl /tmp/filter.out"

#Root: forward to App1 [OK]
<LocationMatch "^/">
   ProxyPassMatch  http://10.1.0.100/App1
   ProxyPassReverse  http://10.1.0.100/App1
</LocationMatch>

#API: Forward to tomcat (api) [OK]
<LocationMatch "^/api/(.*)">
   ProxyPassMatch   http://localhost:8080/api/$1
   ProxyPassReverse http://localhost:8080/api/$1
</LocationMatch>

#Decoder: Forward to tomcat (decoder) [OK]
<LocationMatch "^/decoder(.*)">
   ProxyPassMatch   http://localhost:8080/decoder$1
   ProxyPassReverse http://localhost:8080/decoder$1
</LocationMatch>

#App1 with filter execution [OK]
<LocationMatch "^/App1/Shop/home.aspx(.*)">
   ProxyPassMatch   
     http://10.1.0.100/App1/Shop/home.aspx$1
   ProxyPassReverse 
   http://10.1.0.100/App1/Shop/home.aspx$1

   SetOutputFilter   filter1
</LocationMatch>

#App1 [OK]
<LocationMatch "^/App1(.*)">
   ProxyPassMatch   http://10.1.0.100/App1$1
   ProxyPassReverse http://10.1.0.100/App1$1
</LocationMatch>

</VirtualHost>

#[KO]
<VirtualHost *:80>
   ServerName 10.1.0.101
   ServerAlias www.domain.eu  web.domain.eu
   DocumentRoot /var/www/html/wordpress
</VirtualHost>

[ОБНОВЛЕНИЕ 2018/11/28]

Я изменил конфигурацию, как было предложено @tom, но эти изменения не устранили проблему. Возможно, проблема не в конфигурации Apache, а в нашем Fortinet 60E, потому что мы заметили, что добавление следующей строки в клиентах Windows в файле C: \ Windows \ System32 \ drivers \ etc \ hosts ведет к ожидаемому поведению.

10.1.0.101      web.domain.eu

Наш DNS настроен для сопоставления нашего общедоступного IP-адреса. Fortinet перенаправляет запрос (без NAT) на веб-сервер Apache (10.1.0.101), но, похоже, удаляет некоторую информацию.

1
задан 28 November 2018 в 18:56
1 ответ

У вас обоих экземпляров VirtualHost есть та же комбинация IP + порт + ServerName. Эти три элемента вместе должны однозначно определять ваш виртуальный хост. Для виртуального хостинга на основе имени IP-адрес и номер порта будут одинаковыми, поэтому вы можете различать их с помощью директивы ServerName . Не указывайте IP-адрес в качестве ServerName .

<VirtualHost 10.1.0.101:80>
  ServerName b2b.domain.eu
  [...]
</VirtualHost>

<VirtualHost 10.1.0.101:80>
  ServerName www.domain.eu
  ServerAlias web.domain.eu
  [...]
</VirtualHost>

Также прочтите документацию по виртуальному хостингу на основе имен .

1
ответ дан 3 December 2019 в 23:10

Теги

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