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


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

Раздел 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  

Пункт 152. Модуль Apache mod_isapi

Этот модуль реализует API расширения Интернет-сервера. Это позволяет Apache для Windows обслуживать расширения Интернет-сервера ( например, модули ISAPI .dll) с учетом отмеченных ограничений.

Модули расширения ISAPI (файлы .dll) написаны третьими лицами. Apache Group не является автором этих модулей, поэтому мы не предоставляем их поддержку. Пожалуйста, свяжитесь с автором ISAPI напрямую, если у вас возникли проблемы с запуском их расширения ISAPI. Пожалуйста , не публикуйте такие проблемы в списках Apache или на страницах отчетов об ошибках.

Применение

В файле конфигурации сервера используйте AddHandler директиву, чтобы связать файлы ISAPI с isapi-handler обработчиком и сопоставить их с их расширениями файлов. Чтобы любой файл .dll мог обрабатываться как расширение ISAPI, отредактируйте файл apache2.conf и добавьте следующую строку:

 AddHandler isapi-обработчик .dll 
В более старых версиях сервера Apache isapi-isa было правильным именем обработчика, а не isapi-handler . Начиная с версии разработки 2.3 сервера Apache isapi-isa больше не действует. Вам нужно будет изменить свою конфигурацию, чтобы использовать isapi-handler вместо этого.

На сервере Apache нет возможности оставить запрошенный модуль загруженным. Однако вы можете предварительно загрузить и оставить определенный модуль загруженным, используя следующий синтаксис в вашем apache2.conf:

 ISAPICacheFile c:/WebWork/Scripts/ISAPI/mytest.dll 

Независимо от того, предварительно загружено ли расширение ISAPI, все расширения ISAPI управляются теми же разрешениями и ограничениями, что и сценарии CGI. То есть Options ExecCGI должен быть установлен для каталога, содержащего файл ISAPI .dll.

Ознакомьтесь с дополнительными примечаниями и журналом программиста для получения дополнительных сведений и пояснений по конкретной поддержке ISAPI, предлагаемой mod_isapi .

Дополнительные замечания

Реализация Apache ISAPI соответствует всем спецификациям ISAPI 2.0, за исключением некоторых «специфических для Microsoft» расширений, связанных с асинхронным вводом-выводом. Модель ввода/вывода Apache не допускает асинхронного чтения и записи таким способом, к которому мог бы получить доступ ISAPI. Если ISA пытается получить доступ к неподдерживаемым функциям, включая асинхронный ввод-вывод, в журнал ошибок помещается сообщение, помогающее при отладке. Так как эти сообщения могут стать флудом, ISAPILogNotSupported Off существует директива, чтобы успокоить этот шум.

Некоторые серверы, такие как Microsoft IIS, загружают расширение ISAPI на сервер и держат его загруженным до тех пор, пока использование памяти не станет слишком большим или пока не будут указаны параметры конфигурации. В настоящее время Apache загружает и выгружает расширение ISAPI каждый раз, когда оно запрашивается, если не ISAPICacheFile указана директива. Это неэффективно, но модель памяти Apache делает этот метод наиболее эффективным. Многие модули ISAPI несовместимы с сервером Apache, и выгрузка этих модулей помогает обеспечить стабильность сервера.

Кроме того, помните, что хотя Apache поддерживает расширения ISAPI, он не поддерживает фильтры ISAPI . Поддержка фильтров может быть добавлена позже, но в настоящее время поддержка не планируется.

Журнал программиста

Если вы программируете mod_isapi модули Apache 2.0, вы должны ограничить свои вызовы ServerSupportFunction следующими директивами:

HSE_REQ_SEND_URL_REDIRECT_RESP
Перенаправить пользователя в другое место.
Это должен быть полный URL-адрес ( например, http://server/location ).
HSE_REQ_SEND_URL
Перенаправить пользователя в другое место.
Это не может быть полный URL-адрес, вам не разрешено передавать протокол или имя сервера ( например , просто /location ).
Это перенаправление обрабатывается сервером, а не браузером.

Предупреждение

В своей недавней документации Microsoft, похоже, отказалась от различия между двумя HSE_REQ_SEND_URL функциями. Apache продолжает рассматривать их как две отдельные функции с разными требованиями и поведением.

HSE_REQ_SEND_RESPONSE_HEADER
Apache принимает тело ответа после заголовка, если оно следует за пустой строкой (двумя последовательными символами новой строки) в строковом аргументе заголовков. Это тело не может содержать NULL, так как аргумент заголовков завершается NULL.
HSE_REQ_DONE_WITH_SESSION
Apache считает, что это не работает, поскольку сеанс будет завершен, когда ISAPI вернется из обработки.
HSE_REQ_MAP_URL_TO_PATH
Apache преобразует виртуальное имя в физическое.
HSE_APPEND_LOG_PARAMETER
Это зарегистрированное сообщение может быть зафиксировано в любом из следующих журналов:
  • в \"%{isapi-parameter}n\" компоненте в CustomLog директиве
  • в %q компоненте журнала с ISAPIAppendLogToQuery On директивой
  • в журнале ошибок ISAPIAppendLogToErrors On директивой

Первый вариант, %{isapi-parameter}n компонент, всегда доступен и предпочтителен.

HSE_REQ_IS_KEEP_CONN
Вернет согласованный статус Keep-Alive.
HSE_REQ_SEND_RESPONSE_HEADER_EX
Будет вести себя как задокументировано, хотя fKeepConn флаг игнорируется.
HSE_REQ_IS_CONNECTED
Сообщит false, если запрос был прерван.

Apache возвращает FALSE любой неподдерживаемый вызов ServerSupportFunction и устанавливает GetLastError значение ERROR_INVALID_PARAMETER .

ReadClient извлекает тело запроса, превышающее начальный буфер (определенный параметром ISAPIReadAheadBuffer ). В зависимости от ISAPIReadAheadBuffer настройки (количество байтов для буферизации перед вызовом обработчика ISAPI) более короткие запросы отправляются завершенными расширению при его вызове. Если запрос длиннее, расширение ISAPI должно использоваться ReadClient для извлечения оставшейся части запроса.

WriteClient поддерживается, но только с HSE_IO_SYNC флагом или без флага (значение 0 ). Любой другой WriteClient запрос будет отклонен с возвращаемым значением FALSE и GetLastError значением ERROR_INVALID_PARAMETER .

GetServerVariable поддерживается, хотя расширенные переменные сервера не существуют (как определено другими серверами). Все обычные переменные среды Apache CGI доступны из GetServerVariable , а также значения ALL_HTTP и ALL_RAW .

Начиная с httpd 2.0 mod_isapi поддерживает дополнительные функции, представленные в более поздних версиях спецификации ISAPI, а также ограниченную эмуляцию асинхронного ввода-вывода и семантики TransmitFile . Apache httpd также поддерживает предварительную загрузку ISAPI .dll для повышения производительности.



Директива ISAPIAppendLogToErrors

Описание:Записывать HSE_APPEND_LOG_PARAMETER запросы от расширений ISAPI в журнал ошибок.
Синтаксис: ISAPIAppendLogToErrors on|off
По умолчанию: ISAPIAppendLogToErrors off
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Переопределить:Информация о файле
Положение дел:База
Модуль:mod_isapi

Записывайте HSE_APPEND_LOG_PARAMETER запросы от расширений ISAPI в журнал ошибок сервера.



Директива ISAPIAppendLogToQuery

Описание:Запись HSE_APPEND_LOG_PARAMETER запросов от расширений ISAPI в поле запроса
Синтаксис: ISAPIAppendLogToQuery on|off
По умолчанию: ISAPIAppendLogToQuery on
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Переопределить:Информация о файле
Положение дел:База
Модуль:mod_isapi

Записывайте HSE_APPEND_LOG_PARAMETER запросы от расширений ISAPI в поле запроса (добавляется к CustomLog %q компоненту).



Директива ISAPICacheFile

Описание:Файлы ISAPI .dll для загрузки при запуске
Синтаксис: ISAPICacheFile file-path [file-path] ...
Контекст:конфигурация сервера, виртуальный хост
Положение дел:База
Модуль:mod_isapi

Задает разделенный пробелами список имен файлов, которые будут загружены при запуске сервера Apache и останутся загруженными до завершения работы сервера. Эту директиву можно повторять для каждого желаемого файла ISAPI .dll. Должен быть указан полный путь к каждому файлу. Если имя пути не является абсолютным, оно будет рассматриваться относительно ServerRoot .



Директива ISAPIFakeAsync

Описание:Поддельная асинхронная поддержка обратных вызовов ISAPI
Синтаксис: ISAPIFakeAsync on|off
По умолчанию: ISAPIFakeAsync off
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Переопределить:Информация о файле
Положение дел:База
Модуль:mod_isapi

Если этот параметр включен, моделируется асинхронная поддержка обратных вызовов ISAPI.



Директива ISAPILogNotSupported

Описание:Регистрировать неподдерживаемые запросы функций от расширений ISAPI.
Синтаксис: ISAPILogNotSupported on|off
По умолчанию: ISAPILogNotSupported off
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Переопределить:Информация о файле
Положение дел:База
Модуль:mod_isapi

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



Директива ISAPIReadAheadBuffer

Описание:Размер буфера упреждающего чтения, отправляемого в расширения ISAPI.
Синтаксис: ISAPIReadAheadBuffer size
По умолчанию: ISAPIReadAheadBuffer 49152
Контекст:конфигурация сервера, виртуальный хост, каталог, .htaccess
Переопределить:Информация о файле
Положение дел:База
Модуль:mod_isapi

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



 <         > 

Пункты:   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  

Рейтинг@Mail.ru