ProxyPreserveHost на отдельных правилах прокси


8

У меня есть два правила proxypass на моем веб-хосте: одно указывает на локальный экземпляр лака для целей кэширования, для которого я хочу включить ProxyPreserveHost, а другое - на сторонний размещенный сайт, для которого я хочу отключить ProxyPreserveHost. Есть ли в любом случае я могу сделать это на основе правил / проходов?

Ответы:


13

В Apache 2.2 нет - ProxyPreserveHostдиректива действует только в контексте конфигурации сервера или виртуального хоста ; вам нужны разные ProxyPassоператоры для разных виртуальных хостов.

В Apache 2.4 да - контекст директории был добавлен для директивы , так что теперь вы можете сделать что-то вроде:

<Location /to-varnish/>
    ProxyPreserveHost On
    ProxyPass http://127.0.0.1:8000/to-varnish/
</Location>
<Location /to-third-party/>
    ProxyPreserveHost Off
    ProxyPass http://third-party-site.com/
</Location>

3

Вы можете с помощью RequestHeader

ProxyPreserveHost On
<LocationMatch third-party-pattern>
   RequestHeader  set  Host  third-party-vhost-name
   ProxyPassMatch  http://third-party-server
</LocationMatch>
<LocationMatch varnish-pattern>
   ProxyPassMatch  http://varnish-server
</LocationMatch>

0

Я не могу поднять ответ Сорина ...

В нашей локальной ситуации работает Apache 2.2, а первичному приложению для входа требуется proxypreservehost (автор CQ / AEM), а для партнера, которому мы доверяем, требуется его хост в заголовке хоста.

Нам не нужно делать это с помощью регулярных выражений, хотя обычный <Location...>работает нормально.

Из документации ( http://httpd.apache.org/docs/2.2/mod/core.html#location ):

Директива ограничивает область действия вложенных директив URL-адресом.

Это решение работает для нас:

  <Location /[path]/ >
    RequestHeader set Host [thirdparty]
  </Location>
  RewriteRule ^/[path]/(.*) https://[thirdparty]/$1 [P,NC,L]

Это устанавливает заголовок узла для этого запроса на имя узла партнера.

Имея это в виду, мы можем продолжать входить в CQ / AEM автора и прокси в партнерскую службу, используя их ожидаемый заголовок хоста.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.