Раздел 10. Модули Апача Пункты: 85 86 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 163 164 165 166 167 168 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 203 204 205 206 207 208 209 210 211 212 213 RU EN Пункт 178. Модуль Apache mod_proxy_html Этот модуль предоставляет выходной фильтр для перезаписи HTML-ссылок в ситуации с прокси-сервером, чтобы гарантировать, что ссылки работают для пользователей вне прокси-сервера. Он служит той же цели, что и директива Apache ProxyPassReverse для заголовков HTTP, и является важным компонентом обратного прокси. Например, если у компании есть сервер приложений,
mod_proxy_html изначально разрабатывался в WebЮing, чья обширная документация может быть полезна пользователям. Директива ProxyHTMLBufSize
Чтобы анализировать не-HTML-контент (таблицы стилей и скрипты), встроенный в HTML-документы, mod_proxy_html должен прочитать весь скрипт или таблицу стилей в буфер. Этот буфер будет расширяться по мере необходимости для хранения самого большого скрипта или таблицы стилей на странице с шагом в байтах , как установлено этой директивой. Значение по умолчанию — 8192, и оно подходит практически для всех страниц. Однако, если вы знаете, что проксируете страницы, содержащие таблицы стилей и/или скрипты размером более 8 КБ (то есть для одного скрипта или таблицы стилей, а НЕ все вместе), будет более эффективно установить больший размер буфера и избежать необходимости для динамического изменения размера буфера во время запроса. Директива ProxyHTMLCharsetOut
Это выбирает кодировку для вывода mod_proxy_html. Обычно его не следует использовать, так как любое изменение значения по умолчанию Обратите внимание, что это зависит от Директива ProxyHTMLDocType
В первой форме документы будут объявлены как HTML 4.01 или XHTML 1.0 в зависимости от выбранной опции. Этот параметр также определяет, используется ли для вывода синтаксис HTML или XHTML. Обратите внимание, что формат документов, поступающих с внутреннего сервера, не имеет значения: синтаксический анализатор обработает его автоматически. Если для необязательного второго аргумента установлено значение «Устаревшие», документы будут объявлены «Переходными», что может быть необходимо, если вы проксируете контент, выпущенный до 1998 года, или работаете с дефектными инструментами разработки/публикации. Во второй форме он вставит ваш собственный FPI. Необязательный второй аргумент определяет, будет ли использоваться синтаксис SGML/HTML или XML/XHTML. Значение по умолчанию изменено на пропуск любого FPI на том основании, что ни один FPI не лучше поддельного. Если ваш сервер генерирует достойный HTML или XHTML, установите его соответствующим образом. Если используется первая форма, mod_proxy_html также очистит HTML до указанного стандарта. Он не может исправить каждую ошибку, но удалит фиктивные элементы и атрибуты. Он также может регистрировать другие ошибки при Директива ProxyHTMLEnable
Простой переключатель для включения или отключения фильтра proxy_html. Если Обратите внимание, что фильтр proxy_html будет действовать только на HTML-данные (Content-Type text/html или application/xhtml+xml) и когда данные передаются через прокси. Вы можете переопределить это (на свой страх и риск), установив переменную среды PROXY_HTML_FORCE . Директива ProxyHTMLEvents
Указывает один или несколько атрибутов, которые следует рассматривать как события сценария, и применять Обычно вы устанавливаете это глобально. Если вы устанавливаете ProxyHTMLEvents более чем в одной области, чтобы одна переопределяла другую, вам нужно будет указать полный набор в каждой из этих областей. Конфигурация по умолчанию предоставляется в proxy-html.conf и определяет события в стандартных HTML 4 и XHTML 1. ProxyHTMLExtended директива
При значении Если установлено значение
Вам также нужно будет позаботиться о сопоставлении шаблонов, поскольку синтаксический анализатор не знает, что такое URL-адрес во встроенном скрипте или таблице стилей. В частности, расширенное сопоставление Директива ProxyHTMLFixups
Эта директива принимает от одного до трех аргументов следующим образом:
Будьте осторожны при их использовании. Исправления исправят некоторые авторские ошибки, но также могут привести к ошибочному исправлению ссылок, которые изначально были правильными. Используйте их только в том случае, если вы знаете, что у вас сломан внутренний сервер. Директива ProxyHTMLInterp
Это позволяет выполнять интерполяцию для каждого запроса в
Если интерполяция не включена, все правила предварительно компилируются при запуске. При интерполяции их приходится перекомпилировать для каждого запроса, что влечет за собой дополнительные накладные расходы на обработку. Поэтому его следует включать только в случае необходимости. Директива ProxyHTMLLinks
Определяет элементы с атрибутами URL, которые должны быть переписаны с использованием стандартных Обычно вы устанавливаете это глобально. Если вы устанавливаете ProxyHTMLLinks более чем в одной области, чтобы одна переопределяла другую, вам нужно будет указать полный набор в каждой из этих областей. Конфигурация по умолчанию предоставляется в файле proxy-html.conf и определяет HTML-ссылки для стандартных HTML 4 и XHTML 1. Примеры из proxy-html.confProxyHTMLLinks a href href области ProxyHTMLLinks Ссылка на ProxyHTMLLinks href ProxyHTMLLinks img src longdesc карта использования Карта использования данных кодовой базы класса ProxyHTMLLinks объекта ProxyHTMLLinks q cite Цитата блока ProxyHTMLLinks ProxyHTMLLinks в цитировании ProxyHTMLLinks ссылки Действие формы ProxyHTMLLinks ProxyHTMLLinks input src usemap Главный профиль ProxyHTMLLinks База ProxyHTMLLinks href Скрипт ProxyHTMLLinks src для Директива ProxyHTMLMeta
Это включает или выключает предварительный анализ метаданных в
Если это не требуется, отключение ProxyHTMLMeta даст небольшой прирост производительности за счет пропуска этого шага синтаксического анализа. Однако иногда необходимо, чтобы интернационализация работала правильно. ProxyHTMLMeta имеет два эффекта. Во-первых и самое главное, он позволяет обнаруживать кодировки символов, объявленные в форме <meta http-equiv="Content-Type" content="text/html;charset= foo "> или, в случае документа XHTML, объявление XML. Это НЕ требуется, если кодировка объявлена в реальном заголовке HTTP (что всегда предпочтительнее) с внутреннего сервера, а также если документ имеет формат utf-8 (юникод) или подмножество, такое как ASCII. Вы также можете обойтись без него, если в документах используется значение по умолчанию, объявленное с помощью Другим эффектом включения ProxyHTMLMeta является анализ всех
ПредупреждениеПоскольку ProxyHTMLMeta продвигает все http-equiv элементы в заголовки HTTP, важно включать его только в тех случаях, когда вы доверяете HTML-содержимому так же, как доверяете вышестоящему серверу. Если HTML контролируется злоумышленниками, они могут внедрить произвольные, возможно вредоносные, HTTP-заголовки в ответы вашего сервера.
Директива ProxyHTMLStripComments
Эта директива заставит mod_proxy_html удалить HTML-комментарии. Обратите внимание, что это также удалит любые скрипты или стили, встроенные в комментарии (фальшивость, введенная в 1995/6 с Netscape 2 для пользы тогдашних старых браузеров, но все еще используемая сегодня). Это также может мешать обработчикам комментариев, таким как SSI или ESI: обязательно запустите любой из них перед mod_proxy_html в цепочке фильтров, если удаляете комментарии! Директива ProxyHTMLURLMap
Это ключевая директива для перезаписи ссылок HTML. При синтаксическом анализе документа всякий раз, когда цель ссылки совпадает с from-pattern , совпадающая часть будет перезаписана в to-pattern с учетом любых предоставленных флагов и директивы
Необязательный третий аргумент может определять любой из следующих флагов . Флаги чувствительны к регистру.
Необязательный четвертый аргумент cond определяет условие, которое будет оцениваться для каждого запроса, если установлено
Условие оценивается синтаксическим анализатором выражений . Кроме того, также поддерживается более простой синтаксис условий в mod_proxy_html 3.x для HTTPD 2.0 и 2.2. Пункты: 85 86 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 163 164 165 166 167 168 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 203 204 205 206 207 208 209 210 211 212 213 |