第七十三章 Apache (UNIX® Linux macOS) 的替代选项 - 替代选项 2:带有 NSD 的 CGI 模块 (nph-CSPcgi)

文章目录

  • [第七十三章 Apache (UNIX® Linux macOS) 的替代选项 - 替代选项 2:带有 NSD 的 CGI 模块 (nph-CSPcgi)](#第七十三章 Apache (UNIX® Linux macOS) 的替代选项 - 替代选项 2:带有 NSD 的 CGI 模块 (nph-CSPcgi))
  • [替代选项 `2`:带有 `NSD` 的 `CGI` 模块 (`nph-CSPcgi`)](#替代选项 2:带有 NSD 的 CGI 模块 (nph-CSPcgi))
  • 映射其他文件类型
  • [使用 `CGI` 和 `NSD` 操作和管理 `Web` 网关](#使用 CGI 和 NSD 操作和管理 Web 网关)

第七十三章 Apache (UNIX® Linux macOS) 的替代选项 - 替代选项 2:带有 NSD 的 CGI 模块 (nph-CSPcgi)

替代选项 2:带有 NSD 的 CGI 模块 (nph-CSPcgi)

Web 服务器应配置为能够识别文件类型并将它们传递到 Web 网关进行处理。

Web 服务器配置文件 (httpd.conf) 位于以下目录中:

复制代码
/usr/apache/conf

对于 Red Hat Linux,httpd.conf 的运行时版本位于:

java 复制代码
/etc/httpd/conf

将以下部分添加到 httpd.conf 的末尾:

xml 复制代码
<LocationMatch "/*\.([Cc][Ss][Pp]|[Cc][Ll][Ss]|[Zz][En][Nn])$">
    AllowOverride None
    Options FollowSymLinks ExecCGI
    Require all granted
</LocationMatch>
ScriptAliasMatch /csp/bin/Systems/Module.cxw "/opt/webgateway/bin/nph-CSPcgiSys" 
ScriptAliasMatch /csp/bin/RunTime/Module.cxw "/opt/webgateway/bin/nph-CSPcgi"
ScriptAliasMatch /*\.([Cc][Ss][Pp]|[Cc][Ll][Ss])$ "/opt/webgateway/bin/nph-CSPcgi"
Alias /csp/ instance-installation-directory
<Directory "instance-installation-directory">
    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/"
<Directory "/opt/webgateway/bin/">
    AllowOverride None
    Options None
    Require all granted
</Directory>

上述配置块依赖于 Apache 环境可用的正则表达式 (regex) 处理器。有时情况并非如此,因此不会提供 CSP 文件(返回文件未找到错误)。为了解决这种情况,您可以将 Web 应用程序的(虚拟)根位置与 CGI 模块关联,而不是通过 CSP 文件扩展名进行关联。例如,您的 Web 应用程序包含在 /csp 中。要将 CSP CGI 模块与 /csp 下的文件关联,请替换以下配置块:

xml 复制代码
<LocationMatch "/*\.([Cc][Ss][Pp]|[Cc][Ll][Ss]|[Zz][En][Nn])$">
    AllowOverride None
    Options FollowSymLinks ExecCGI
    Require all granted
</LocationMatch>
ScriptAliasMatch /*\.([Cc][Ss][Pp]|[Cc][Ll][Ss])$ "/opt/webgateway/bin/nph-CSPcgi"
xml 复制代码
<Location "/csp">
    AllowOverride None
    Options FollowSymLinks ExecCGI
   Require all granted
</Location>
ScriptAlias /csp "/opt/webgateway/bin/nph-CSPcgi"

这些指令适用于以下形式的 URL:

xml 复制代码
http://localhost:<port_no>/csp/*.csp

复制其他根位置的配置块。例如,针对以下形式的 URL 对 /myapps 重复该过程:

xml 复制代码
http://localhost:<port_no>/myapps/*.csp

避免正则表达式问题的另一种方法是将 Action 指令与 CSP MIME 类型结合使用。但是,应该注意的是,Action 本质上是一种内容过滤技术,因此,即使 IRIS 服务器安装在单独的计算机上,也要求CSP 文件实际存在于 Web 服务器主机上。如果您希望使用此方法,请首先将新的 MIME 类型添加到 Apache mime.types 文件的末尾,并将其与表示 CSP 内容的文件类型相关联。 mime.types 文件与 httpd.conf 文件位于同一目录中。

复制代码
text/csp                csp cls

现在,将 Action 指令添加到 httpd.conf 中 CGI 配置块的末尾,如下所示:

xml 复制代码
Alias /csp/ /opt/webgateway/csp/
<Directory "/opt/webgateway/csp">
    AllowOverride None
    Options MultiViews FollowSymLinks ExecCGI
    Require all granted
<Files CSPnsd>
       Require all denied
    </Files>
<Files CSP.ini>
       Require all denied
    </Files>
<Files CSP.log>
       Require all denied
    </Files>
<Files CSPnsd.ini>
       Require all denied
    </Files>
<Files CSPnsd.pid>
       Require all denied
    </Files>
</Directory>
ScriptAlias /csp-bin/ "/opt/webgateway/bin/"
<Directory "/opt/webgateway/bin/">
    AllowOverride None
    Options None
    Require all granted
</Directory>
Action text/csp "/csp-bin/nph-CSPcgi"

更改 httpd.conf 后重新启动 Apache。

最后,请注意,由于 CGI 是开放标准,因此 CSP CGI 模块适用于任何 Web 服务器。

映射其他文件类型

Apache API 模块始终识别 InterSystems 文件类型。对于其他文件扩展名,请参阅配置 Apache 以传递其他文件类型。

使用 CGI 和 NSD 操作和管理 Web 网关

此连接选项取决于 Web Gateway 的网络服务守护程序 (NSD)。

  1. 按照操作 NSD 中的说明启动 CSP NSD
  2. 更改其配置 (httpd.conf) 后重新启动 Apache。Apache 和 NSD 的启动顺序并不重要。
  3. 要访问 Web Gateway 管理页面,请在浏览器中输入以下 URL 之一。
java 复制代码
http://localhost:<port_no>/csp/bin/Systems/Module.cxw 
http://localhost:<port_no>/csp-bin/nph-CSPcgiSys

如果看到未经授权的用户错误消息,请参阅启用来自其他客户端地址的访问。

相关推荐
曦夜日长17 分钟前
Git系统篇,Git本地使用(一):从“究极进化版“到三个区域的底层原理
大数据·linux·git·elasticsearch
shimly1234561 小时前
给断网无 sudo ubuntu22.04 机器安装 nodejs
linux
别动我齐刘海2 小时前
Linux 系统调试学习1
linux·运维·服务器·c++·学习·机器学习·机器人
Lsetea3 小时前
OpenSSL报certificate chain too long:error 22与verify_depth深度排查
linux·https·ssl证书·openssl·证书链
不像程序员的程序媛4 小时前
linux常见文本操作命令
linux·运维·服务器
wangbing11254 小时前
开发指南149-IotDB-常用命令
linux·运维·iotdb
看着博客敲代码4 小时前
WorkBuddy 接上 Kali MCP 做自动化渗透:信息收集到初步验证的落地记录
linux·人工智能·安全·网络安全·自动化
小HANN6 小时前
华为云企业网站上云实战|从零搭建高可用WordPress全站架构(ECS+RDS+ELB+弹性伸缩+云监控闭环)
linux·运维·服务器·经验分享
星恒随风6 小时前
Linux库的底层原理:ELF文件格式、静态链接、程序加载、虚拟地址空间与GOT/PLT详解
linux·运维·笔记·学习·状态模式
GeW7 小时前
2026新质生产力路线图:Linux、数据库与智能算力融合报告
linux