правильно ли настроен mod_proxy_html?

правильно ли настроен mod_proxy_html?

У меня есть веб-сервер Apache2, который выполняет функции обратного прокси-сервера для приложения Rails3, работающего на другой машине.

Настройка работает, за исключением того, что URL-адреса, сгенерированные в веб-приложении, не перезаписываются моей конфигурацией для mod_proxy_html.

The«Сценарий обратного прокси»именно это я и пытаюсь сделать, поэтому я следовал руководству настолько тщательно, насколько мог.

Я применил или попробовал предоставленные ответыздесьна stackoverflow, безрезультатно.

Согласно "Сценарию обратного прокси" вам нужно загрузить несколько модулей. Все эти инструкции находятся в моем файле httpd.conf, и когда я изучаю вывод из

apactectl -t -D DUMP_MODULES

все ожидаемые модули показаны в списке.

Мой внешний веб-сервер, выполняющий функции обратного прокси-сервера, находится по адресу www.ourdomain.org, а приложение Rails доступно внутри по адресу apphost.local (сервер — Mac OS X Server 10.6, сервер приложения Rails — Mac OS X 10.6).

На данный момент работает доступ к веб-приложению через обратный прокси-сервер следующим образом:

http://www.ourdomain.org/apphost/railsappname/controllername/action 

Но ни один из файлов javascript, css или других ресурсов не загружается, а внутренние ссылки веб-приложения выходят без части apphost URL, как будто мое правило перезаписи настроено неправильно (конечно, я сосредоточился на этом и, похоже, не могу ничего добавить или удалить в процессе передачи HTML из apphost и через сервер Apache).

Например, наведя курсор на ссылку действия в HTML-коде, возвращаемом веб-приложением, вы получите:

http://www.ourdomain.org/railsappname/controllername/action

Вот как выглядят мои директивы Apache:

LoadModule proxy_html_module /usr/libexec/apache2/mod_proxy_html.so
LoadModule xml2enc_module /usr/libexec/apache2/mod_xml2enc.so
    ProxyHTMLLogVerbose On
    LogLevel Debug
    ProxyPass /apphost/  http://apphost.local/
    <Location /apphost/>
            SetOutputFilter INFLATE;proxy-html;DEFLATE
            ProxyPassReverse /
            ProxyHTMLExtended On
            ProxyHTMLURLMap railsappname/ apphost/railsappname/
            RequestHeader unset Accept-Encoding
    </Location>

После каждого изменения, которое я вношу в httpd.conf, я добросовестно проверяю apachectl -t, просто чтобы быть в здравом уме.

Я определенно не эксперт по Apache, но все директивы, которые следуют за моими, похоже, не отменяют то, что я делаю здесь. Но затем, что бы я ни пытался, похоже, не меняет URL-адреса, которые я вижу в своем браузере после обращения к серверу Apache с запросом на мое веб-приложение.

Даже если вы не можете сказать, что я сделал неправильно, я бы приветствовал идеи о том, как заставить Apache помочь увидеть, над чем он работает и что делает с html, поступающим из моего веб-приложения. Я понял, что ProxyHTMLLogVerbose On и LogLevel Debug настраивают именно это, но я ничего не вижу в файлах журнала.

решение1

Может быть, это немного упрощенный ответ, но большинство (если не все) директив ProxyHTMLURLMap, которые я видел до сих пор, имеют / в начале шаблона сопоставления/замены. Вы пробовали этот вариант вашей конфигурации?

ProxyHTMLURLMap /railsappname/ /apphost/railsappname/

Если это не поможет, то какая версия apache у вас установлена? И если применимо, то какая версия модуля? Он поставляется в комплекте с apache только с apache 2.4, поэтому для более старых версий apache вы должны установить (какую-то версию) этого модуля самостоятельно.

В качестве альтернативы вы также можете переключиться на mod_substitute, хотя это потребует большей настройки, чем mod_proxy_html.

В какой-то момент они удалили некоторые встроенные конфигурации, которые требуют добавления их самостоятельно. Смотретьhttp://apache.webthing.com/svn/apache/filters/proxy_html/proxy_html.conf, то вам необходимо добавить в конфигурацию директивы ProxyHTMLLinks и ProxyHTMLEvents.

Связанный контент