• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • mod_isapi

    描述:Apache 中的 ISAPI Extensions 用于 Windows
    状态:Base
    模块标识符:isapi_module
    源文件:mod_isapi.c
    兼容性:仅限 Win32

    摘要

    此模块实现 Internet Server 扩展 API。它允许 Apache 为 Windows 提供 Internet 服务器 extensions(e.g. ISAPI .dll 模块),但需遵守上述限制。

    ISAPI 扩展模块(.dll files)由第三方编写。 Apache Group 不会创建这些模块,因此我们不提供对它们的支持。如果您在运行 ISAPI 扩展程序时遇到问题,请直接联系 ISAPI 的作者。请不要将此类问题发布到 Apache 的 lists 或错误报告页面.

    用法

    在 server configuration 文件中,使用AddHandler指令将 ISAPI files 与isapi-handler处理程序关联,并使用其文件 extensions 将其映射到它们。要使任何.dll 文件作为 ISAPI 扩展名处理,请编辑 httpd.conf 文件并添加以下 line:

    AddHandler isapi-handler .dll
    

    在旧版本的 Apache 服务器中,isapi-isa是正确的处理程序 name,而不是isapi-handler。从 Apache 服务器的 2.3 开发版本开始,isapi-isa不再有效。您需要更改 configuration 以使用isapi-handler

    Apache 服务器中没有能力保留加载的请求模块。但是,您可以在 httpd.conf 中使用以下语法预加载并保留特定模块:

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

    无论您是否预加载了 ISAPI 扩展,所有 ISAPI extensions 都受与 CGI 脚本相同的权限和限制的约束。也就是说,必须为包含 ISAPI .dll 文件的目录设置选项ExecCGI

    查看补充说明和程序员杂志以获取更多详细信息,并澄清mod_isapi提供的特定 ISAPI 支持。

    附加说明

    Apache 的 ISAPI implementation 符合所有 ISAPI 2.0 规范,除了一些处理异步 I/O 的“Microsoft-specific”extensions。 Apache 的 I/O model 不允许以 ISAPI 可以访问的方式进行异步读写。如果 ISA 尝试访问不受支持的 features,包括 async I/O,则会在错误 log 中放置一条消息以帮助调试。由于这些消息可能成为洪水,因此存在指令ISAPILogNotSupported Off以平息此噪声。

    某些服务器(如 Microsoft IIS)将 ISAPI 扩展加载到服务器中并保持加载直到 memory 使用率过高,或者除非指定了 configuration 选项。 Apache 当前每次请求时都会加载和卸载 ISAPI 扩展,除非指定了ISAPICacheFile指令。这是低效的,但 Apache 的 memory model 使这成为最有效的方法。许多 ISAPI 模块与 Apache 服务器巧妙地不兼容,卸载这些模块有助于确保服务器的稳定性。

    另外,请记住,虽然 Apache 支持 ISAPI Extensions,但不支持 ISAPI 过滤器。可以在稍后的 date 添加对过滤器的支持,但是此 time 不计划支持。

    程序员杂志

    如果您正在编写 Apache 2.0 mod_isapi模块,则必须将 calls 限制为ServerSupportFunction以下指令:

    • HSE_REQ_SEND_URL_REDIRECT_RESP
      将用户重定向到另一个位置。这必须是完全限定的 URL(e.g. http://server/location)。
    • HSE_REQ_SEND_URL
      将用户重定向到另一个位置。这不能是完全限定的 URL,不允许传递协议或服务器 name(e.g.只需/location)。此重定向由服务器处理,而不是由浏览器处理。警告在最近的文档中,Microsoft 似乎放弃了两个 HSE_REQ_SEND_URL 功能之间的区别。 Apache 继续将它们视为具有不同要求和行为的两个不同功能。
    • HSE_REQ_SEND_RESPONSE_HEADER
      如果 Apache 在 headers string 参数中跟随空 line(两个连续的换行符),则接受标题后面的响应主体。此主体不能包含 NULL,因为 headers 参数是 NULL 终止的。
    • HSE_REQ_DONE_WITH_SESSION
      Apache 认为这是 no-op,因为 session 将在 ISAPI 从处理返回时完成。
    • HSE_REQ_MAP_URL_TO_PATH
      Apache 会将虚拟 name 转换为物理 name。
    • HSE_APPEND_LOG_PARAMETER
      可以在以下任何日志中捕获此记录的消息:在%q log component 中的 CustomLog 指令中的\“%{。45}n \”component 中,在带有 ISAPIAppendLogToErrors On 指令的错误 log 中使用 ISAPIAppendLogToQuery On 指令第一个选项,%{。 46}n component,始终可用且首选。
    • HSE_REQ_IS_KEEP_CONN
      将_return 谈判 Keep-Alive 状态。
    • HSE_REQ_SEND_RESPONSE_HEADER_EX
      尽管 fKeepConn flag 被忽略,但行为与记录一致。
    • HSE_REQ_IS_CONNECTED
      如果请求已中止,将报告 false。

    Apache 将FALSE返回给ServerSupportFunction的任何不受支持的调用,并将GetLastError value _set 设置为ERROR_INVALID_PARAMETER

    ReadClient检索超过初始缓冲区的请求主体(由ISAPIReadAheadBuffer定义)。基于ISAPIReadAheadBuffer设置(在调用 ISAPI 处理程序之前缓冲的字节数),在调用时,较短的请求将完整地发送到扩展。如果请求更长,则 ISAPI 扩展必须使用ReadClient来检索剩余的请求正文。

    支持WriteClient,但仅支持HSE_IO_SYNC flag 或没有选项 flag(0的值)。任何其他WriteClient请求将被拒绝

    支持GetServerVariable,但扩展服务器变量不存在(由其他 servers.)定义所有常见的 Apache CGI 环境变量可从GetServerVariable获得,以及ALL_HTTPALL_RAW值。

    由于 httpd 2.0,mod_isapi支持在 ISAPI 规范的更高版本中引入的其他 features,以及 async I/O 和TransmitFile语义的有限仿真。 Apache httpd 还支持为 performance 预加载 ISAPI .dlls。

    ISAPIAppendLogToErrors 指令

    描述:Record HSE_APPEND_LOG_PARAMETER从 ISAPI extensions 请求错误 log
    句法:ISAPIAppendLogToErrors on\|off
    默认:ISAPIAppendLogToErrors off
    Context:server config,virtual host,directory,.htaccess
    覆盖:FileInfo
    状态:Base
    模块:mod_isapi

    Record HSE_APPEND_LOG_PARAMETER从 ISAPI extensions 请求到服务器错误 log。

    ISAPIAppendLogToQuery 指令

    描述:Record HSE_APPEND_LOG_PARAMETER从 ISAPI extensions 到查询字段的请求
    句法:ISAPIAppendLogToQuery on\|off
    默认:ISAPIAppendLogToQuery on
    Context:server config,virtual host,directory,.htaccess
    覆盖:FileInfo
    状态:Base
    模块:mod_isapi

    Record HSE_APPEND_LOG_PARAMETER从 ISAPI extensions 到查询字段的请求(附加到CustomLog%q component)。

    ISAPICacheFile 指令

    描述:ISAPI .dll files 在启动时加载
    句法:ISAPICacheFile file-path[file-path]...
    Context:server config,virtual host
    状态:Base
    模块:mod_isapi

    指定 Apache 服务器启动时要加载的 space-separated 文件名列表,并在服务器关闭之前保持加载状态。可以对所需的每个 ISAPI .dll 文件重复此指令。应指定每个文件的完整路径 name。如果路径 name 不是绝对路径,则将相对于ServerRoot进行处理。

    ISAPIFakeAsync 指令

    描述:对 ISAPI 回调的伪异步支持
    句法:ISAPIFakeAsync on\|off
    默认:ISAPIFakeAsync off
    Context:server config,virtual host,directory,.htaccess
    覆盖:FileInfo
    状态:Base
    模块:mod_isapi

    设置为 on 时,将模拟对 ISAPI 回调的异步支持。

    ISAPILogNotSupported 指令

    描述:从 ISAPI extensions 中记录不受支持的 feature 请求
    句法:ISAPILogNotSupported on\|off
    默认:ISAPILogNotSupported off
    Context:server config,virtual host,directory,.htaccess
    覆盖:FileInfo
    状态:Base
    模块:mod_isapi

    在服务器错误 log 中记录来自 ISAPI extensions 的所有不受支持的 features 请求。这可以帮助管理员追踪问题。一旦设置为 on 并且所有所需的 ISAPI 模块都正常运行,它应该重新设置为关闭。

    ISAPIReadAheadBuffer 指令

    描述:发送到 ISAPI extensions 的 Read Ahead Buffer 的大小
    句法:ISAPIReadAheadBuffer size
    默认:ISAPIReadAheadBuffer 49152
    Context:server config,virtual host,directory,.htaccess
    覆盖:FileInfo
    状态:Base
    模块:mod_isapi

    定义最初调用时发送到 ISAPI extensions 的 Read Ahead Buffer 的最大大小。必须使用ReadClient回调检索所有剩余数据;某些 ISAPI extensions 可能不支持ReadClient function。将问题提交给 ISAPI 扩展的作者。

    上篇:mod_info

    下篇:mod_lbmethod_bybusyness