通过


进程隔离

HTTP Server 版本 2.0 API 通过隔离正在为请求队列上的请求提供服务的工作进程来构建更安全、更可靠的服务。 请求队列由严格控制其访问权限的控制器或创建者进程创建和管理。 控制器进程启动对请求队列执行 I/O 的一个或多个单独的工作进程。 控制器进程使用管理权限运行并配置请求队列,而较低的特权工作进程则处理来自请求队列的访问和服务请求。 此体系结构支持在“最低特权”下运行的应用程序的策略,并减少第三方代码可能引入的安全漏洞的可能性,这些漏洞可能在工作进程中运行。

当控制器进程创建具有名称和访问控制列表(ACL)的请求队列时,将授予对请求队列的访问权限。 ACL 中包含的 Web 应用程序可以按名称打开现有请求队列。 创建者进程也可能是请求队列上的工作进程。 有关详细信息,请参阅 命名请求队列 主题。 下图显示了使用工作进程模型运行的典型 HTTP 应用程序的体系结构:

关系图,显示使用工作进程模型的 H T T P 应用程序的体系结构。

应用程序中的各个工作进程与其他工作进程隔离,每个工作进程运行状况都可以由控制器进程监视。 控制器进程与工作进程隔离。 HTTP 体系结构的组件如下所述:

  • 创建者或控制器进程:控制器进程可以使用或不具有管理权限来监视运行状况和配置服务。 控制器进程通常为服务创建单个服务器会话,并定义服务器会话下的 URL 组。 特定 URL 关联的 URL 组确定哪个请求队列服务由特定 URL 表示的命名空间。 控制器进程还会创建请求队列,并启动可访问请求队列的工作进程。
  • 工作进程:由控制器进程启动的辅助进程对与它们服务 URL 关联的请求队列执行 IO。 创建请求队列时,控制器进程向 Web 应用程序授予对请求队列的访问权限。 除非 Web 应用程序也是创建者进程,否则它不会管理服务或配置请求队列。 控制器进程将请求队列的名称传达给工作进程,工作进程按名称打开请求队列。 辅助进程可以加载第三方 Web 应用程序,而不会在应用程序的其他部分引入安全漏洞。
  • 请求队列:请求队列由控制器进程创建和配置。 控制器指定创建请求队列时允许访问 ACL 中的请求队列的进程。
  • 服务器会话:控制器进程通常为应用程序创建和配置单个服务器会话。 服务器会话维护整个应用程序的配置属性。 URL 组由控制器进程在服务器会话下创建。
  • URL 组:控制器进程在服务器会话下创建 URL 组,并配置独立于服务器会话的 URL 组。 由控制器进程将 URL 添加到组。 请求将路由到 URL 组与之关联的请求队列。