使用 Nginx 实现严格的安全性和虚拟主机隔离?

使用 Nginx 实现严格的安全性和虚拟主机隔离?

我目前已设置了一个 Apache Web 服务器,该服务器使用 HTTPD-ITK 和 AppArmor 模块隔离每个虚拟主机。每个虚拟主机的工作人员都由服务器设置了 UID/GID,然后放置在 AppArmor 配置文件中。

我想使用 Nginx,但我找不到任何关于如何设置的文档,以便工作进程不是在所有虚拟主机之间共享,而是每个虚拟主机都有工作进程(因此可以设置 UID/设置 GID)。有没有办法在 Nginx 下做到这一点?

答案1

nginx 与 Apache 完全不同(除了是 HTTP 服务器之外)。它的模型是 nginx 本身没有“worker”,其中某些 Web 应用程序在进程内运行。

nginx 基本上对 http 请求执行“前端终止”,然后将工作交给后端服务器,该后端服务器可以再次通过 HTTP 或特定协议(如 FCGI、mod_passenger 等)完成。

因此,无需直接在 nginx 中执行使用 Apache 执行的操作。这是一个功能:它使总体架构更加精简,最终速度更快,对 CPU 能力和内存等资源的要求更低。

答案2

我最终通过为每个网站运行一个 Nginx 实例以及一个将反向代理连接到每个网站的主 Nginx 来解决这个问题。它与 PHP-FPM 相结合,为需要 PHP 的网站提供 PHP。

我已经在 GitHub 存储库中放置了一个用于处理此类设置的 Nginx 配置生成的框架,供任何人使用:https://github.com/hach-que/Nginx-Secure

相关内容