2016-12-06 4 views
-1

Я пытаюсь решить проблему с внутренней настройкой ProxyPass на http-сервере apache версии 2.4. Все отлично работает иначе, именно этот вопрос ProxyPass, что я не решить:Apache ProxyPass для разделения VirtualHost на ту же систему

действую несколько виртуальных хостов на основе имени на одной системе с example.org, выступающей в качестве хоста по умолчанию, и все узлы, использующие https протокол на порту 443 с действительный (подпись) сертификаты:

  • example.org
  • host1.example.org
  • host2.example.org

Для одного типа запроса я хочу настроить внутреннее правило ProxyPass на example.org.

https://host1.example.org/_-_-_/bar => https://example.org/foo/bar 

ProxyPassReverse является не требуется, так как результат не возвращается. (Я также попытался с, но это не имеет никакого значения):

Это набор правил, который является частью конфигурации хоста host1.example.org:

SSLProxyEngine   On 
ProxyRequests   Off 
ProxyVia    Off 
ProxyPass    "/_-_-_/bar"  "https://example.org/foo/bar" 

прокси делает работы, это прокси запрос. Но проблема в том, что он не запрашивает правильный хост! Так что не example.org, но изначально запрошен хост host1.example.org, поэтому он сам просит. Я могу ясно видеть как запросов в том же файле журнала доступа, в то время как журнал доступа example.org остается нетронутым. Очевидно, что это поведение приводит к статусу 404 http. Это также отображается на стороне клиента как сообщение об ошибке, сгенерированное хостом host1.example.org (отлично), но отображающее внутренний путь /foo/bar (не штраф). Поэтому мой вопрос, очевидно, таков:

Что нужно изменить, чтобы запрос прокси внутренне обрабатывался желаемым виртуальным хостом?

+0

Привет. Я был бы признателен, если вы взглянете на [эту комнату] (https://chat.stackoverflow.com/rooms/156413/temp) и прочитаете мои комментарии. – Shafizadeh

ответ

0

Хорошо, как я уже подозревал ранее, у меня возникла проблема с другими деталями конфигурации, мешающими здесь. Я размещаю эти ответы как подсказку для других, которые могут споткнуться о подобной ситуации:

Другой файл конфигурации, содержащийся в конфигурации хоста, устанавливает глобальную директиву ProxyPreserveHost On. Это, очевидно, привело к тому, что запрос внутреннего прокси-сервера отображал тот же самый сохраненный заголовок узла в качестве исходного запроса, который должен был привести к тому, что внутренний запрос обрабатывался тем же виртуальным хостом, что и исходный запрос.

Я решил проблему путем перемещения (и дублирования), что директивы в конкретные <Location> блоков, так что глобальное по умолчанию не сохранить хозяин в запросах прокси не изменяется. Следовательно, запросы прокси, описанные в вопросе, работают как ожидалось, они обрабатываются желаемым виртуальным хостом.