<-
Apache > HTTP Server > Documentation > Version 2.0

Переменные Окружающей среды в Apacheе

Apache Сервер HTTP обеспечивает механизм для того, чтобы хранить информацию в названных переменных, которые называют переменные окружающей среды . эта информация может использоваться, чтобы управлять различными операциями, типа контроля доступа или заготовки леса. Переменные также используются как механизм, чтобы общаться с внешними программами, типа подлинников CGI. Этот документ обсуждает различные способы управлять и использовать эти переменные.

хотя эти переменные упоминаются переменные окружающей среды , они не то же самое как переменные окружающей среды, которыми управляет основная операционная система. Вместо этого эти переменные сохранены и управляются во внутренней Apacheской структуре. Они только становятся фактическими операционными переменными окружающей среды системы, когда их обеспечивают к подлинникам CGI, и Сторона Сервера Включают подлинники. Если Вы желаете управлять операционной окружающей средой системы, под которой бежит сам сервер, Вы должны использовать стандартные механизмы манипуляции окружающей среды, обеспеченные вашим операционным снарядом системы.

top

Setting Environment Variables

Basic Environment Manipulation

самый основной путь установить переменную окружающей среды в Apacheе использует безоговорочное SetEnv директива. Переменные можно также передать от окружающей среды снаряда, который начал сервер, используя PassEnv директива.

Conditional Per-Request Settings

для дополнительной гибкости, директивы, обеспеченные mod_setenvif позволяют переменным окружающей среды быть установленными на в-запрос основании, условном на особенностях специфических запросов. Например, переменная могла быть установлена только, когда определенный браузер (Пользовательский агент) делает запрос, или только когда определенный Referer [так] удар головой найден. Даже больше гибкости доступно через mod_rewrite's RewriteRule который использует [E=...] выбор установить переменные окружающей среды.

Unique Identifiers

наконец, mod_unique_id устанавливает переменную окружающей среды UNIQUE_ID для каждого запроса к ценности, которая, как гарантируют, будет уникальной поперек "всех" запросов при очень определенных условиях.

Standard CGI Variables

в дополнение к всему набору переменных окружающей среды в пределах Apacheской конфигурации и прошел от снаряда, подлинникам CGI и страницам ПЕРВОЙ СТЕПЕНИ ИНТЕГРАЦИИ предоставляют ряд переменных окружающей среды, содержащих информацию Меты о запросе как требуется CGI specification .

Some Caveats

top

Using Environment Variables

CGI Scripts

одно из первичных использований переменных окружающей среды должно сообщить информацию к подлинникам CGI. Как обсуждено выше, окружающая среда, которую передают к подлинникам CGI включает стандартную информацию Меты о запросе в дополнение к любому набору переменных в пределах Apacheской конфигурации. Для большего количества деталей, см. CGI tutorial .

SSI Pages

разобранный сервером (ПЕРВАЯ СТЕПЕНЬ ИНТЕГРАЦИИ) документы, обработанные mod_include's INCLUDES фильтр может напечатать переменные окружающей среды, используя echo элемент, и может использовать переменные окружающей среды в элементах контроля потока к, делает части страницы условными на особенностях запроса. Апач также предоставляет страницам ПЕРВОЙ СТЕПЕНИ ИНТЕГРАЦИИ стандартные переменные окружающей среды CGI как обсуждено выше. Для большего количества деталей, см. SSI tutorial .

Access Control

доступом к серверу можно управлять основанный на ценности переменных окружающей среды, используя allow from env= и deny from env= директивы. В комбинации с SetEnvIf , это учитывает гибкий контроль доступа к серверу, основанному на особенностях клиента. Например, Вы можете использовать эти директивы, чтобы отрицать доступ к специфическому браузеру (Пользовательский агент).

Conditional Logging

переменные окружающей среды могут быть загружены регистрация доступа, используя LogFormat выбор %e . кроме того, решение относительно того, действительно ли регистрировать запросы может быть принято основанное на статусе переменных окружающей среды, используя условную форму CustomLog директива. В комбинации с SetEnvIf это учитывает гибкий контроль, которого зарегистрированы запросы. Например, Вы можете хотеть не регистрировать запросы об именах файла, заканчивающихся в gif , или Вы можете хотеть только регистрировать запросы от клиентов, которые являются вне вашей подсети.

Conditional Response Headers

Header директива может использовать присутствие или отсутствие переменной окружающей среды, чтобы определить, действительно ли определенный удар головой HTTP будет помещен в ответ на клиента. Это позволяет, например, определенному удару головой ответа быть посланным, только если соответствующий удар головой получен в запросе от клиента.

External Filter Activation

внешние фильтры, формируемые mod_ext_filter использование ExtFilterDefine директива может активизированным условный на переменной окружающей среды использование disableenv= и enableenv= варианты.

URL Rewriting

%{ENV:...} форма TestString в RewriteCond позволяет, что mod_rewrite's переписывают двигатель, чтобы принять решения, условные на переменных окружающей среды. Отметьте что переменные, доступные в mod_rewrite без ENV: приставка не фактически переменные окружающей среды. Скорее они - переменные, особенные для mod_rewrite, к которому нельзя получить доступ от других модулей.

top

Special Purpose Environment Variables

проблемы способности к взаимодействию привели к введению механизмов, чтобы изменить способ, которым Apache ведет себя когда говорящий со специфическими клиентами. Чтобы сделать эти механизмы настолько гибкими насколько возможно, они призваны, определяя переменные окружающей среды, типично с BrowserMatch , хотя SetEnv и PassEnv мог также использоваться, например.

downgrade-1.0

это вынуждает запрос быть рассмотренным как запрос HTTP/1.0, даже если это было в более позднем диалекте.

force-no-vary

это заставляет любого Vary области, которые будут удалены от удара головой ответа прежде, чем это посылают назад клиенту. Некоторые клиенты не интерпретируют эту область правильно (см. known client problems страница); урегулирование этой переменной может работать вокруг этой проблемы. Урегулирование этой переменной также подразумевает force-response-1.0 .

force-response-1.0

это вызывает ответ HTTP/1.0 клиентам, делающим запрос HTTP/1.0. Это было первоначально осуществлено в результате проблемы с полномочиями AOL. Некоторые клиенты HTTP/1.0, возможно, не ведут себя правильно когда дано ответ HTTP/1.1, и это может использоваться, чтобы межработать с ними.

gzip-only-text/html

когда установлено в ценность "1", эта переменная повреждает ВЫКАЧИВАЮЩИЙСЯ фильтр продукции, обеспеченный mod_deflate для довольных типов кроме text/html .

no-gzip

когда установлено, DEFLATE фильтр mod_deflate будет выключен.

nokeepalive

это повреждает KeepAlive когда установлено.

prefer-language

это влияет mod_negotiation 's поведение. Если это содержит языковой признак (, типа en , ja или x-klingon ), mod_negotiation попытки поставлять вариант с тем языком. Если нет такого варианта, нормального negotiation процесс применяется.

redirect-carefully

это вынуждает сервер быть более осторожным, посылая переадресовывание клиенту. Это типично используется, когда клиент имеет известную обработку проблемы, переадресовывает. Это было первоначально осуществлено в результате проблемы с программным обеспечением Microsoft WebFolders, которое имеет обработку проблемы, переадресовывает на директивных ресурсах через методы Союза американских ветеранов войны.

suppress-error-charset

доступный в версиях после 2.0.54

когда Apache выпускает переадресовывание в ответ на запрос клиента, ответ включает некоторый фактический текст, который будет показан в случае, если клиент не может (или не делать), автоматически следуют за переназначением. Апач обычно маркирует этот текст согласно набору символов, который это использует, который является ISO-8859-1.

однако, если переназначение будет к странице, которая использует различный набор символов, то некоторые сломанные версии браузера будут пробовать использовать набор символов от текста переназначения, а не фактической страницы. Это может привести к греческому языку, например, будучи неправильно предоставленным.

урегулирование этой переменной окружающей среды заставляет Apacheа опускать набор символов для текста переназначения, и эти сломанные браузеры будут тогда правильно использовать браузеры страницы предназначения.

top

Examples

Changing protocol behavior with misbehaving clients

мы рекомендуем, чтобы следующие линии были включены в 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

Do not log requests for images in the access log

этот пример держит запросы об изображениях от появления в регистрации доступа. Это может быть легко изменено, чтобы предотвратить заготовку леса специфических справочников, или предотвратить заготовку леса запросов, прибывающих от специфических хозяев.

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

Prevent "Image Theft"

этот пример показывает, как держать людей не на вашем сервере от использования изображений на вашем сервере как действующие изображения на их страницах. Это не рекомендованная конфигурация, но это может работать при ограниченных обстоятельствах. Мы предполагаем, что все ваши изображения находятся в справочнике, названном/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 ".