Apache Версия 2.0 Сервера HTTP
Apache Сервер HTTP обеспечивает механизм для того, чтобы хранить информацию в названных переменных, которые называют переменные окружающей среды . эта информация может использоваться, чтобы управлять различными операциями, типа контроля доступа или заготовки леса. Переменные также используются как механизм, чтобы общаться с внешними программами, типа подлинников CGI. Этот документ обсуждает различные способы управлять и использовать эти переменные.
хотя эти переменные упоминаются переменные окружающей среды , они не то же самое как переменные окружающей среды, которыми управляет основная операционная система. Вместо этого эти переменные сохранены и управляются во внутренней Apacheской структуре. Они только становятся фактическими операционными переменными окружающей среды системы, когда их обеспечивают к подлинникам CGI, и Сторона Сервера Включают подлинники. Если Вы желаете управлять операционной окружающей средой системы, под которой бежит сам сервер, Вы должны использовать стандартные механизмы манипуляции окружающей среды, обеспеченные вашим операционным снарядом системы.
Связанные Модули | Связанные Директивы |
---|---|
самый основной путь установить переменную окружающей среды в Apacheе использует безоговорочное
SetEnv
директива. Переменные можно также передать от окружающей среды снаряда, который начал сервер, используя
PassEnv
директива.
для дополнительной гибкости, директивы, обеспеченные mod_setenvif позволяют переменным окружающей среды быть установленными на в-запрос основании, условном на особенностях специфических запросов. Например, переменная могла быть установлена только, когда определенный браузер (Пользовательский агент) делает запрос, или только когда определенный Referer [так] удар головой найден. Даже больше гибкости доступно через mod_rewrite's
RewriteRule
который использует
[E=...]
выбор установить переменные окружающей среды.
наконец, mod_unique_id устанавливает переменную окружающей среды
UNIQUE_ID
для каждого запроса к ценности, которая, как гарантируют, будет уникальной поперек "всех" запросов при очень определенных условиях.
в дополнение к всему набору переменных окружающей среды в пределах Apacheской конфигурации и прошел от снаряда, подлинникам CGI и страницам ПЕРВОЙ СТЕПЕНИ ИНТЕГРАЦИИ предоставляют ряд переменных окружающей среды, содержащих информацию Меты о запросе как требуется CGI specification .
suexec
используется, чтобы начать подлинники CGI, окружающая среда будет чиститься к ряду
сейф
переменные перед подлинниками CGI начаты. Список
сейф
переменные определены в, собирают разовый в
suexec.c
.
Связанные Модули | Связанные Директивы |
---|---|
одно из первичных использований переменных окружающей среды должно сообщить информацию к подлинникам CGI. Как обсуждено выше, окружающая среда, которую передают к подлинникам CGI включает стандартную информацию Меты о запросе в дополнение к любому набору переменных в пределах Apacheской конфигурации. Для большего количества деталей, см. CGI tutorial .
разобранный сервером (ПЕРВАЯ СТЕПЕНЬ ИНТЕГРАЦИИ) документы, обработанные mod_include's
INCLUDES
фильтр может напечатать переменные окружающей среды, используя
echo
элемент, и может использовать переменные окружающей среды в элементах контроля потока к, делает части страницы условными на особенностях запроса. Апач также предоставляет страницам ПЕРВОЙ СТЕПЕНИ ИНТЕГРАЦИИ стандартные переменные окружающей среды CGI как обсуждено выше. Для большего количества деталей, см.
SSI tutorial
.
доступом к серверу можно управлять основанный на ценности переменных окружающей среды, используя
allow from env=
и
deny from env=
директивы. В комбинации с
SetEnvIf
, это учитывает гибкий контроль доступа к серверу, основанному на особенностях клиента. Например, Вы можете использовать эти директивы, чтобы отрицать доступ к специфическому браузеру (Пользовательский агент).
переменные окружающей среды могут быть загружены регистрация доступа, используя
LogFormat
выбор
%e
. кроме того, решение относительно того, действительно ли регистрировать запросы может быть принято основанное на статусе переменных окружающей среды, используя условную форму
CustomLog
директива. В комбинации с
SetEnvIf
это учитывает гибкий контроль, которого зарегистрированы запросы. Например, Вы можете хотеть не регистрировать запросы об именах файла, заканчивающихся в
gif
, или Вы можете хотеть только регистрировать запросы от клиентов, которые являются вне вашей подсети.
Header
директива может использовать присутствие или отсутствие переменной окружающей среды, чтобы определить, действительно ли определенный удар головой HTTP будет помещен в ответ на клиента. Это позволяет, например, определенному удару головой ответа быть посланным, только если соответствующий удар головой получен в запросе от клиента.
внешние фильтры, формируемые
mod_ext_filter
использование
ExtFilterDefine
директива может активизированным условный на переменной окружающей среды использование
disableenv=
и
enableenv=
варианты.
%{ENV:...}
форма
TestString
в
RewriteCond
позволяет, что mod_rewrite's переписывают двигатель, чтобы принять решения, условные на переменных окружающей среды. Отметьте что переменные, доступные в mod_rewrite без
ENV:
приставка не фактически переменные окружающей среды. Скорее они - переменные, особенные для mod_rewrite, к которому нельзя получить доступ от других модулей.
проблемы способности к взаимодействию привели к введению механизмов, чтобы изменить способ, которым Apache ведет себя когда говорящий со специфическими клиентами. Чтобы сделать эти механизмы настолько гибкими насколько возможно, они призваны, определяя переменные окружающей среды, типично с
BrowserMatch
, хотя
SetEnv
и
PassEnv
мог также использоваться, например.
это вынуждает запрос быть рассмотренным как запрос HTTP/1.0, даже если это было в более позднем диалекте.
это заставляет любого
Vary
области, которые будут удалены от удара головой ответа прежде, чем это посылают назад клиенту. Некоторые клиенты не интерпретируют эту область правильно (см.
known client problems
страница); урегулирование этой переменной может работать вокруг этой проблемы. Урегулирование этой переменной также подразумевает
force-response-1.0
.
это вызывает ответ HTTP/1.0 клиентам, делающим запрос HTTP/1.0. Это было первоначально осуществлено в результате проблемы с полномочиями AOL. Некоторые клиенты HTTP/1.0, возможно, не ведут себя правильно когда дано ответ HTTP/1.1, и это может использоваться, чтобы межработать с ними.
когда установлено в ценность "1", эта переменная повреждает ВЫКАЧИВАЮЩИЙСЯ фильтр продукции, обеспеченный
mod_deflate
для довольных типов кроме
text/html
.
когда установлено,
DEFLATE
фильтр
mod_deflate
будет выключен.
это повреждает
KeepAlive
когда установлено.
это влияет
mod_negotiation
's поведение. Если это содержит языковой признак (, типа
en
,
ja
или
x-klingon
),
mod_negotiation
попытки поставлять вариант с тем языком. Если нет такого варианта, нормального
negotiation
процесс применяется.
это вынуждает сервер быть более осторожным, посылая переадресовывание клиенту. Это типично используется, когда клиент имеет известную обработку проблемы, переадресовывает. Это было первоначально осуществлено в результате проблемы с программным обеспечением Microsoft WebFolders, которое имеет обработку проблемы, переадресовывает на директивных ресурсах через методы Союза американских ветеранов войны.
доступный в версиях после 2.0.54
когда Apache выпускает переадресовывание в ответ на запрос клиента, ответ включает некоторый фактический текст, который будет показан в случае, если клиент не может (или не делать), автоматически следуют за переназначением. Апач обычно маркирует этот текст согласно набору символов, который это использует, который является ISO-8859-1.
однако, если переназначение будет к странице, которая использует различный набор символов, то некоторые сломанные версии браузера будут пробовать использовать набор символов от текста переназначения, а не фактической страницы. Это может привести к греческому языку, например, будучи неправильно предоставленным.
урегулирование этой переменной окружающей среды заставляет Apacheа опускать набор символов для текста переназначения, и эти сломанные браузеры будут тогда правильно использовать браузеры страницы предназначения.
мы рекомендуем, чтобы следующие линии были включены в httpd.conf, чтобы иметь дело с известными проблемами клиента.
# # The following directives modify normal HTTP response behavior. # The first directive disables keepalive for Netscape 2.x and browsers that # spoof it. There are known problems with these browser implementations. # The second directive is for Microsoft Internet Explorer 4.0b2 # which has a broken HTTP/1.1 implementation and does not properly # support keepalive when it is used on 301 or 302 (redirect) responses. # BrowserMatch "Mozilla/2" nokeepalive BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 # # The following directive disables HTTP/1.1 responses to browsers which # are in violation of the HTTP/1.0 spec by not being able to grok a # basic 1.1 response. # BrowserMatch "RealPlayer 4\.0" force-response-1.0 BrowserMatch "Java/1\.0" force-response-1.0 BrowserMatch "JDK/1\.0" force-response-1.0
этот пример держит запросы об изображениях от появления в регистрации доступа. Это может быть легко изменено, чтобы предотвратить заготовку леса специфических справочников, или предотвратить заготовку леса запросов, прибывающих от специфических хозяев.
SetEnvIf Request_URI \.gif image-request SetEnvIf Request_URI \.jpg image-request SetEnvIf Request_URI \.png image-request CustomLog logs/access_log common env=!image-request
этот пример показывает, как держать людей не на вашем сервере от использования изображений на вашем сервере как действующие изображения на их страницах. Это не рекомендованная конфигурация, но это может работать при ограниченных обстоятельствах. Мы предполагаем, что все ваши изображения находятся в справочнике, названном/web/images.
SetEnvIf Referer "^http://www.example.com/" local_referal # Allow browsers that do not send Referer info SetEnvIf Referer "^$" local_referal <Directory /web/images> Order Deny,Allow Deny from all Allow from env=local_referal </Directory>
за дополнительной информацией об этой технике, см. обучающую программу ApacheToday " Keeping Your Images from Adorning Other Sites ".