第七十一章 Apache (UNIX® Linux macOS) 的替代选项 - 替代选项 1:带有 NSD 的 Apache API 模块 (mod_csp2

54 阅读2分钟

第七十一章 Apache (UNIX® Linux macOS) 的替代选项 - 替代选项 1:带有 NSD 的 Apache API 模块 (mod_csp24.so)

替代选项 1:带有 NSDApache API 模块 (mod_csp24.so)

如果 CSP 模块作为预构建共享对象 (mod_csp24.so) 随发行版一起提供,则从运行时配置开始。要从提供的源文件 mod_csp.c 构建共享对象,请选择下面的方法 1 或方法 2。优选方法 1

请务必结合 Apache 发行版中包含的特定文档阅读以下有关创建共享对象的说明。请注意,此处给出的说明假定 Apache 安装的根目录是 /usr/apache。实际上,此目录名称通常会附加 Apache 版本号。

方法 1:使用 apxs (APache eXtenSion) 工具将 CSP 模块构建为共享对象

以下命令使用 Apache 扩展工具 apxsApache /modules 目录中构建并安装共享库 mod_csp24.so。它还添加了一个指令来将模块加载到 Apache 配置文件 /conf/httpd.conf 中。

apxs –c –o mod_csp24.so mod_csp.c

将生成的共享对象 (mod_csp24.so) 复制到以下目录:/opt/webgateway/bin

方法 2:手动将 CSP 模块构建为共享对象

执行以下步骤将 CSP 模块手动构建为共享对象:

  1. 将模块源文件 mod_csp.c 安装在以下目录中:/usr/apache/src/modules/extra
  2. 返回/usr/apache/src目录并编辑配置文件。在此文件末尾附近,找到以下行:
# AddModule modules/example/mod_example.o

在此行之后,添加以下行:

ShareModule modules/extra/mod_csp24.so
  1. 使用以下命令配置构建过程:
./Configure
  1. 使用以下命令构建共享对象:
make

/usr/apache/src/modules/extra 中生成共享对象 mod_csp24.so

注意:有关 apxs 工具的更多信息,请参阅 Apache 文档:https://httpd.apache.org/docs/2.4/programs/apxs.html

运行时配置

编辑 Apache 配置文件 httpd.conf。对于标准 Apache 发行版,该文件位于:

/usr/apache/conf

对于 Red Hat Linuxhttpd.conf 的运行时版本位于:

/etc/httpd/conf

假设希望为包含 .csp.cls.zen 扩展名的请求文件调用 CSP 引擎,请将以下部分添加到 httpd.conf 的末尾。

LoadModule csp_module /opt/webgateway/bin/mod_csp24.so
CSPFileTypes csp cls zen cxw 
Alias /csp/ /opt/webgateway/csp/
<Directory "/opt/webgateway/csp">
        AllowOverride None
        Options MultiViews FollowSymLinks ExecCGI
        Require all granted
        <FilesMatch "\.(log|ini|pid|exe)$">
                Require all denied
        </FilesMatch>
        <Files CSPnsd>
                Require all denied
        </Files>
</Directory>
ScriptAlias /csp-bin/ "/opt/webgateway/bin/"
ScriptAliasMatch /csp/bin/Systems/Module.cxw "/opt/webgateway/bin/nph-CSPcgiSys" 
ScriptAliasMatch /csp/bin/RunTime/Module.cxw "/opt/webgateway/bin/nph-CSPcgi"
<Directory "/opt/webgateway/bin/">
        AllowOverride None
        Options None
        Require all granted
</Directory>

更改 httpd.conf 后重新启动 Apache