具有多个用户、虚拟主机和 FCGI PHP 的 Nginx 安全模式

具有多个用户、虚拟主机和 FCGI PHP 的 Nginx 安全模式

我想要按如下方式配置 nginx:

  1. 服务器上有多个注册用户。
  2. 每个用户可能拥有几个虚拟主机(他们无法配置它们),两种不同类型的虚拟主机:nodejs 代理或 PHP。
  3. 一个用户不应该能够从另一个用户的目录中获取敏感信息(mysql 数据库设置等)。

例如:

users: joe, tom
virtual hosts:
    joe
        www - /srv/www/main/public_html, Wordpress
        app -> node.js on port 8081
    tom
        www - /srv/www/tom/public_html, custom, very important scripts

joe 不应该能够读取 tom 目录中的文件。nginx 应该为这两个目录中的文件提供服务

使用 apache 可以通过安装 apache2-mpm-itk 并为每个虚拟主机指定用户/组来实现。

使用 nginx 似乎不可能。我看到以下可能的解决方案:

  1. 为每个虚拟主机创建具有不同用户/组的 FCGI 处理程序,这样 PHP 上下文就会不同,并为每个 PHP 文件设置不同的权限。像这样:

    Directory: /srv/www/tom/public_html
    
        script.js - www-data:www-data
        script.php - tom:tom
    
  2. 或者为每个用户使用不同的 nginx 实例,并使用一个主实例代理向他们发送请求。

什么是更好的?

答案1

以用户身份运行用户的 FCGI/node/任何处理程序(我使用 daemontools 运行所有内容,它非常适合这类事情),然后告诉 nginx 代理它们。让所有内容归用户所有,他们可以设置他们喜欢的任何权限,以防止坏人获取他们的东西。

相关内容