Apache. Документация на русском


Разделы:     1      2    3    4    5    6    7    8    9    10    11    12    13    14    15    16  

Раздел 1. Примечания к выпуску

Пункты:     1      2    3    4    5  

 <         > 
  RU            EN  

Пункт 1. Обновление до версии 2.4 с версии 2.2

Чтобы помочь людям выполнить обновление, мы поддерживаем документ, описывающий информацию, важную для существующих пользователей HTTP-сервера Apache. Это краткие заметки, и вы сможете найти дополнительную информацию либо в документе «Новые функции», либо в файле src/CHANGES . Разработчики приложений и модулей могут найти сводку изменений API в обзоре обновлений API.

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

Этот документ описывает только изменения с 2.2 на 2.4. Если вы выполняете обновление с версии 2.0, вам также следует ознакомиться с документом по обновлению с версии 2.0 до 2.2.

Изменения конфигурации во время компиляции

Процесс компиляции очень похож на тот, что использовался в версии 2.2. Ваша старая configure командная строка (находящаяся в build/config.nice каталоге установленного сервера) может использоваться в большинстве случаев. Есть некоторые изменения в настройках по умолчанию. Некоторые подробности изменений:

  • Эти модули были удалены: mod_authn_default, mod_authz_default, mod_mem_cache. Если вы использовали mod_mem_cache в версии 2.2, посмотрите mod_cache_disk в версии 2.4.
  • Все реализации балансировки нагрузки были перемещены в отдельные автономные подмодули mod_proxy, например mod_lbmethod_bybusyness . Возможно, вам потребуется создать и загрузить любой из них, который использует ваша конфигурация.
  • Поддержка платформы была удалена для BeOS, TPF и даже более старых платформ, таких как A/UX, Next и Tandem. Считалось, что они все равно сломаны.
  • configure: динамические модули (DSO) создаются по умолчанию
  • configure: по умолчанию загружается только базовый набор модулей. Остальные LoadModule директивы закомментированы в файле конфигурации.
  • настроить: по умолчанию создается "самый" набор модулей
  • настроить: набор модулей «действительно все» добавляет модули разработчика в набор «все»

Изменения конфигурации во время выполнения

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

Авторизация

Любой файл конфигурации, использующий авторизацию, скорее всего, потребует изменений.

Вам следует просмотреть руководство по аутентификации, авторизации и управлению доступом, особенно раздел Помимо авторизации, в котором объясняются новые механизмы управления порядком применения директив авторизации.

Удалены директивы, управляющие тем, как модули авторизации реагируют, когда они не соответствуют аутентифицированному пользователю: сюда входят AuthzLDAPAuthoritative, AuthzDBDAuthoritative, AuthzDBMAuthoritative, AuthzGroupFileAuthoritative, AuthzUserAuthoritative и AuthzOwnerAuthoritative. Эти директивы были заменены более выразительными RequireAny , RequireNone и RequireAll .

Если вы используете mod_authz_dbm , вы должны перенести свою конфигурацию для использования Require dbm-group ... вместо Require group ... .

Контроль доступа

В версии 2.2 управление доступом на основе имени хоста клиента, IP-адреса и других характеристик клиентских запросов осуществлялось с помощью директив Order , Allow , Deny и Satisfy .

В 2.4 такой контроль доступа делается так же, как и другие проверки авторизации, с помощью нового модуля mod_authz_host . Старые идиомы контроля доступа должны быть заменены новыми механизмами аутентификации, хотя для совместимости со старыми конфигурациями mod_access_compat предоставляется новый модуль.

Смешивание старых и новых директив

Смешивание старых директив, таких как Order , Allow или Deny с новыми, например, Require технически возможно, но не рекомендуется. mod_access_compat был создан для поддержки конфигураций, содержащих только старые директивы, для облегчения обновления 2.4. Ознакомьтесь с приведенными ниже примерами, чтобы лучше понять возможные проблемы.

Вот несколько примеров старых и новых способов контроля доступа.

В этом примере аутентификация отсутствует, и все запросы отклоняются.

2.2 конфигурация:

 Отклонить заказ, разрешить
Запретить от всех 

2.4 конфигурация:

 Требовать все отказано 

В этом примере нет аутентификации и разрешены все запросы.

2.2 конфигурация:

 Порядок разрешить, запретить
Разрешить от всех 

2.4 конфигурация:

 Требовать все предоставленные 

В следующем примере проверка подлинности отсутствует, и всем хостам в домене example.org разрешен доступ; всем остальным хостам отказано в доступе.

2.2 конфигурация:

 Порядок Запретить, Разрешить
Запретить от всех
Разрешить с example.org 

2.4 конфигурация:

 Требуется хост example.org 

В следующем примере смешивание старых и новых директив приводит к неожиданным результатам.

Смешивание старых и новых директив: НЕ РАБОТАЕТ, КАК ОЖИДАЕТСЯ

 DocumentRoot "/var/www/html"
<Каталог "/">
 Аллововеррайд
 Отклонить заказ, разрешить
 Запретить от всех
</Каталог>
<Расположение "/сервер-статус">
 Статус сервера SetHandler
 Требовать местные
</местоположение>
access.log — ПОЛУЧИТЬ/статус сервера 403 127.0.0.1
error.log - AH01797: клиент запрещен конфигурацией сервера: /var/www/html/server-status 

Почему httpd отказывает в доступе к серверу-статусу, даже если конфигурация, кажется, разрешает это? Потому что mod_access_compat директивы имеют приоритет над mod_authz_host директивами в этом сценарии слияния конфигураций.

Этот пример, наоборот, работает так, как ожидалось:

Смешивание старых и новых директив: РАБОТАЕТ КАК ОЖИДАЕТСЯ

 DocumentRoot "/var/www/html"
<Каталог "/">
 Аллововеррайд
 Требовать все отказано
</Каталог>
<Расположение "/сервер-статус">
 Статус сервера SetHandler
 Отклонить заказ, разрешить
 Запретить от всех
 Разрешить с 127.0.0.1
</местоположение>
access.log — ПОЛУЧИТЬ /статус сервера 200 127.0.0.1 

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

Во многих конфигурациях с аутентификацией, где значением Satisfy по умолчанию было ALL , фрагменты кода, которые просто отключали управление доступом на основе хоста, опускаются:

2.2 конфигурация:

 Порядок Запретить, Разрешить
Запретить от всех
Файл AuthBasicProvider
AuthUserFile /example.com/conf/users.passwd
Безопасное имя авторизации
Требовать действительного пользователя 

2.4 конфигурация:

 # Замена не требуется
Файл AuthBasicProvider
AuthUserFile /example.com/conf/users.passwd
Безопасное имя авторизации
Требовать действительного пользователя 

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

2.2 конфигурация:

 Порядок разрешить, запретить
Запретить от всех
# Удовлетворить ВСЕ по умолчанию
Удовлетворить ВСЕ
Разрешить с 127.0.0.1
Файл AuthBasicProvider
AuthUserFile /example.com/conf/users.passwd
Безопасное имя авторизации
Требовать действительного пользователя 

2.4 конфигурация:

 Файл AuthBasicProvider
AuthUserFile /example.com/conf/users.passwd
Безопасное имя авторизации
<ТребоватьВсе>
 Требовать действительного пользователя
 Требовать ip 127.0.0.1
</RequireAll> 

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

2.2 конфигурация:

 Порядок разрешить, запретить
Запретить от всех
Удовлетворить любой
Разрешить с 127.0.0.1
Файл AuthBasicProvider
AuthUserFile /example.com/conf/users.passwd
Безопасное имя авторизации
Требовать действительного пользователя 

2.4 конфигурация:

 Файл AuthBasicProvider
AuthUserFile /example.com/conf/users.passwd
Безопасное имя авторизации
# Неявно <RequireAny>
Требовать действительного пользователя
Требовать ip 127.0.0.1 

Другие изменения конфигурации

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

  • MaxRequestsPerChild был переименован в MaxConnectionsPerChild , более точно описывает, что он делает. Старое имя по-прежнему поддерживается.
  • MaxClients был переименован в MaxRequestWorkers , что более точно описывает то, что он делает. Для асинхронных MPM, таких как event , максимальное количество клиентов не эквивалентно количеству рабочих потоков. Старое имя по-прежнему поддерживается.
  • Директива DefaultType больше не имеет никакого эффекта, кроме выдачи предупреждения, если она используется с любым значением, кроме none . Вам нужно использовать другие параметры конфигурации, чтобы заменить его в 2.4.
  • AllowOverride теперь по умолчанию None .
  • EnableSendfile теперь по умолчанию выключено.
  • FileETag теперь по умолчанию используется «Размер MTime» (без INode).
  • mod_dav_fs : Формат файла DavLockDB изменился для систем с инодами. Старый DavLockDB файл необходимо удалить при обновлении.
  • KeepAlive принимает только значения On или Off . Ранее любое значение, отличное от «Выкл.» или «0», рассматривалось как «Вкл.».
  • Директивы AcceptMutex, LockFile, RewriteLock, SSLMutex, SSLStaplingMutex и WatchdogMutexPath заменены одной Mutex директивой. Вам нужно будет оценить любое использование этих удаленных директив в вашей конфигурации 2.2, чтобы определить, можно ли их просто удалить или их нужно будет заменить с помощью Mutex .
  • mod_cache : CacheIgnoreURLSessionIdentifiers теперь выполняет точное совпадение со строкой запроса вместо частичного совпадения. Если в вашей конфигурации использовались неполные строки, например, с помощью sessionid to match /someapplication/image.gif;jsessionid=123456789 , вам нужно будет перейти на полную строку jsessionid .
  • mod_cache : второй параметр CacheEnable соответствует содержимому прямого прокси, только если оно начинается с правильного протокола. В версии 2.2 и более ранних версиях параметр '/' соответствовал всему содержимому.
  • mod_ldap : LDAPTrustedClientCert теперь последовательно устанавливается только для каждого каталога. Если вы используете эту директиву, проверьте свою конфигурацию, чтобы убедиться, что она присутствует во всех необходимых контекстах каталогов.
  • mod_filter : FilterProvider синтаксис изменился и теперь использует логическое выражение, чтобы определить, применяется ли фильтр.
  • mod_include :
    • Теперь элемент #if expr использует новый синтаксический анализатор выражений. Старый синтаксис можно восстановить с помощью новой директивы SSILegacyExprParser .
    • Директива конфигурации SSI* в области каталога больше не вызывает сброс всех других директив SSI* для каждого каталога до их значений по умолчанию.
  • mod_charset_lite : этот DebugLevel параметр был удален в пользу помодульной LogLevel конфигурации.
  • mod_ext_filter : этот DebugLevel параметр был удален в пользу помодульной LogLevel конфигурации.
  • mod_proxy_scgi : настройка по умолчанию для PATH_INFO httpd изменилась с версии 2.2, и некоторые веб-приложения больше не будут работать должным образом с новой PATH_INFO настройкой. Предыдущую настройку можно восстановить, настроив proxy-scgi-pathinfo переменную.
  • mod_ssl : проверка отзыва на основе CRL теперь должна быть явно настроена через SSLCARevocationCheck .
  • mod_substitute : Максимальная длина строки теперь ограничена 1 МБ.
  • mod_reqtimeout : Если модуль загружен, теперь он будет устанавливать некоторые тайм-ауты по умолчанию.
  • mod_dumpio : DumpIOLogLevel больше не поддерживается. Данные всегда регистрируются в LogLevel trace7 .
  • На платформах Unix конвейерные команды ведения журнала, настроенные с использованием ErrorLog или, CustomLog вызывались с помощью /bin/sh -c в 2.2 и более ранних версиях. В версии 2.4 и более поздних версиях конвейерные команды ведения журнала выполняются напрямую. Чтобы восстановить старое поведение, см. документацию по конвейерному ведению журнала.

Разные изменения

  • mod_autoindex : теперь будет извлекать заголовки и отображать описания для файлов .xhtml, которые ранее игнорировались.
  • mod_ssl : Формат переменных по умолчанию *_DN изменился. Старый формат по-прежнему можно использовать с новым LegacyDNStringFormat аргументом SSLOptions . Протокол SSLv2 больше не поддерживается. SSLProxyCheckPeerCN и SSLProxyCheckPeerExpire теперь по умолчанию включено, что приводит к сбою прокси-запросов к узлам HTTPS с неверными или устаревшими сертификатами с кодом состояния 502 (плохой шлюз)
  • htpasswd теперь использует хэш MD5 по умолчанию на всех платформах.
  • Директива NameVirtualHost больше не имеет никакого эффекта, кроме предупреждения. Любая комбинация адреса/порта, появляющаяся на нескольких виртуальных хостах, неявно рассматривается как виртуальный хост на основе имени.
  • mod_deflate теперь будет пропускать сжатие, если он знает, что дополнительный размер, добавляемый сжатием, больше, чем данные, подлежащие сжатию.
  • Многоязычные документы об ошибках из 2.2.x могут не работать, если они не адаптированы к новому синтаксису элемента mod_include ' #if expr= или директива SSILegacyExprParser не включена для каталога, содержащего документы об ошибках.
  • Функциональность, предоставляемая mod_authn_alias в предыдущих версиях (т. е. AuthnProviderAlias директива), была перенесена в mod_authn_core .
  • Директивы RewriteLog и RewriteLogLevel удалены. Эта функциональность теперь предоставляется путем настройки соответствующего уровня ведения журнала для mod_rewrite модуля с помощью LogLevel директивы. См. также раздел регистрации mod_rewrite.

Сторонние модули

Все модули перед загрузкой должны быть перекомпилированы для версии 2.4.

Многие сторонние модули, разработанные для версии 2.2, будут без изменений работать с Apache HTTP Server версии 2.4. Некоторые потребуют изменений; см. обзор обновлений API.

Распространенные проблемы при обновлении

  • Ошибки запуска:
    • Invalid command 'User', perhaps misspelled or defined by a module not included in the server configuration - загрузочный модуль mod_unixd
    • Invalid command 'Require', perhaps misspelled or defined by a module not included in the server configuration , или Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration - загрузить модуль mod_access_compat , или обновить конфигурацию до директив авторизации 2.4.
    • Ignoring deprecated use of DefaultType in line NN of /path/to/apache2.conf - удалить DefaultType и заменить другими параметрами конфигурации.
    • Invalid command 'AddOutputFilterByType', perhaps misspelled or defined by a module not included in the server configuration - AddOutputFilterByType переместился из ядра в mod_filter, который необходимо загрузить.
  • Ошибки при обслуживании запросов:
    • configuration error: couldn't check user: /path - загрузочный модуль mod_authn_core .
    • .htaccess файлы не обрабатываются - проверьте наличие соответствующей AllowOverride директивы; значение по умолчанию изменилось на None 2.4.


 <         > 

Пункты:     1      2    3    4    5  

Рейтинг@Mail.ru