我想要按如下方式配置 nginx:
- 服务器上有多个注册用户。
- 每个用户可能拥有几个虚拟主机(他们无法配置它们),两种不同类型的虚拟主机:nodejs 代理或 PHP。
- 一个用户不应该能够从另一个用户的目录中获取敏感信息(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 似乎不可能。我看到以下可能的解决方案:
为每个虚拟主机创建具有不同用户/组的 FCGI 处理程序,这样 PHP 上下文就会不同,并为每个 PHP 文件设置不同的权限。像这样:
Directory: /srv/www/tom/public_html script.js - www-data:www-data script.php - tom:tom
或者为每个用户使用不同的 nginx 实例,并使用一个主实例代理向他们发送请求。
什么是更好的?
答案1
以用户身份运行用户的 FCGI/node/任何处理程序(我使用 daemontools 运行所有内容,它非常适合这类事情),然后告诉 nginx 代理它们。让所有内容归用户所有,他们可以设置他们喜欢的任何权限,以防止坏人获取他们的东西。