我在一个 VPS 上托管多个网站,并且想要 chroot 每个网站,例如。/chroot/website1 /chroot/website2
我正在使用高级工具 makejail 来创建 jail,并复制库和依赖项。非常简单。
每个网站都需要 nginx、php 和 mysql。对于 php,我使用的是 php5-fpm,它实际上通过配置支持 chroot,但我没有使用它(也许我应该?)
我的问题是以下三种方法哪种更好:
1) 每个网站都有自己的 nginx、php 和 mysql 独立实例。缺点是,每个 webserver + php 必须监听不同的端口。我还需要在它们前面有一个“主”nginx web 服务器,反向代理到它后面的 chrooted 服务器。可能是最安全的,也是最先进的。
2) 我没有手动创建任何 chroot jails。我设置了一个 nginx web 服务器,该服务器在不同的端口上将 php 请求代理到 php-fpm。我可以有多个 php-fpm 配置,每个配置都有自己的 chroot 文件夹。这很容易管理 - 但是只有 php 会被 chroot。不是实际的 web 服务器。这足够安全吗?此外,我尝试了这个选项,似乎我需要使用 TCP 而不是套接字来连接到 MySQL。
3)你告诉我;)
我对 chroot jailing 还很陌生,所以如果我的假设有误,请纠正我。我已经阅读了所有我能找到的教程,但是我发现市场上的 chroot 指南非常稀缺。任何帮助或意见都非常感谢!
答案1
我最终使用了选项 2。如果我使用 TCP(127.0.0.1)而不是套接字(localhost),那么大多数事情都可以立即运行。
有些事情需要注意:sendmail 和外部服务。对于 sendmail,您可以使用 mini_sendmail。如果您使用 makejail(Debian/Ubuntu 软件包)并按照本教程操作,则设置起来非常容易: http://www.cyberciti.biz/tips/howto-setup-sendmail-php-mail-chrooted-apache-lighttpd.html