Конфигурация mod_proxy_html — проблемы с усечением

Я огляделся вокруг столько, сколько мог, и я попал в точку, где я совершенно запутался.

Я запускаю сервер RedHat с Apache поверх, который я использую в качестве прокси-сервера, чтобы сидеть между внешним миром и двумя другими серверами приложений с совершенно разными базами (один IIS, один Linux).

Оба этих сервера имеют правильные внутренние сетевые URL-адреса, которые понимают приложения, находящиеся на них. Приложения (производные от DotNetNuke и WordPress) генерируют страницы HTML 5, которые содержат правильную/соответствующую разметку, и корректно отображаются за пределами прокси-сервера (т. е. во внутренней сети).

Однако при передаче этих страниц через прокси в результате отсутствуют символы в конце файлов CSS и JavaScript.

Итак (на практике), код JavaScript выглядит следующим образом:

... {return f})})(window);

или CSS следующим образом:

...
background-position:center left;
background-repeat:no-repeat;
}

... превращается в такой код:

... {return f})})(window

или вот так:

...
background-position:center left;
background-repeat:no-re

Настройка прокси использует модули Apache mod_proxy и mod_proxy_html, и я совершенно уверен, что проблема, с которой я сталкиваюсь, связана с конфигурацией mod_proxy_html, которая в настоящее время выглядит следующим образом:

ProxyHTMLEnable On
ProxyHTMLBufSize  102400
ProxyHTMLExtended On
ProxyHTMLStripComments Off
ProxyHTMLDocType "<!DOCTYPE html>"
ProxyHTMLMeta Off
#ProxyHTMLLogVerbose On
#LogLevel Debug

<Location /xxxxx>
        ProxyPass               http://www.example.com
        ProxyPassReverse        http://www.example.com
        ProxyHTMLURLMap         http://www.example.com /xxxxx
        ProxyHTMLURLMap         / /xxxxx/
</Location>

<Location />
        ProxyPass               http://10.11.0.51/
        ProxyPassReverse        http://10.11.0.51/
</Location>

Просмотр документации Apache здесь: http://httpd.apache.org/docs/2.4/en/mod/mod_proxy_html.html - однако не дает никаких немедленных подсказок.

Кто-нибудь сталкивался с такой же проблемой? Или есть что-то быстрое, что мне не хватает?

Любая помощь будет принята с благодарностью!

Обновлено:

В конечном счете, проблема заключалась в поведении mod_proxy_html по умолчанию при анализе всего содержимого в кодировке UTF-8 (когда часть содержимого не была закодирована, что не могло быть изменено, несмотря на все усилия).

С этой целью, после небольшой работы, вместо этого был использован mod_substitute (просто анализирующий текст как текст, игнорируя кодировку файла) вместе с решением для кэширования, чтобы ускорить время загрузки.

К сожалению, mod_proxy_html не работал для этого проекта, но в конце концов был найден способ сделать это!


person Pete    schedule 03.12.2012    source источник
comment
Странное обновление: я заметил, что код, возвращаемый в любой браузер в Linux (например, Chrome, Chromium, Firefox), усекается, но в среде Windows 7 он не усекается во всех браузерах (например, Internet Explorer, Chrome и Safari). все возвращают усеченные файлы - Firefox возвращает полный файл). Может ли это быть связано с тем, как браузер делает запрос?   -  person Pete    schedule 04.12.2012
comment
В конце концов проблема решена (путем не использования этого модуля для достижения конечного результата) - но я не могу закрыть вопрос, поэтому, пожалуйста, не отвечайте!   -  person Pete    schedule 11.12.2012


Ответы (2)


Проблема связана с ошибкой в ​​mod_proxy_html (s. http://apache-http-server.18135.x6.nabble.com/PATCH-mod-xml2enc-eats-end-of-file-td5001104.html)

Я смог проверить описанное поведение (см. журнал ошибок apache с уровнем журнала debug), и патч работает для меня, хотя его подход не является идеальным решением.

Версии: mod_xml2enc (1.0.4) libxml2 (2.7.6-0.9.1)

person tps    schedule 13.06.2013

Изменить

ProxyHTMLDocType "<!DOCTYPE html>" 

to

ProxyHTMLDocType "<!DOCTYPE html>" XML

Быть осведомленным

ProxyHTMLStripComments Off 

это не работает для всех комментариев. Пока не нашел решения для этого.

person Niki    schedule 11.12.2012
comment
Это интересно - если я правильно понимаю, это заставляет mod_proxy_html верить в его синтаксический анализ XML, а не в HTML? - person Pete; 11.12.2012
comment
Да, точно. Лично я отказался от mod_proxy_html, это просто не стоит боли, потому что он повторно анализирует страницу, а затем создает новую страницу. Теперь я использую mod_substitute, чтобы выполнять простой текстовый поиск и замену вывода страницы, проще, быстрее, делать то, что я хочу. - person Niki; 25.01.2013