我正在尝试设置类似的东西:
a.site.com b.site.com c.site.com
现在,我希望 a.site.com 中的数据完全独立于 b.site.com。基本上,我希望能够为客户端 A 提供 a.site.com 的 FTP 访问权限,为客户端 B 提供 b.site.com 的 FTP 访问权限。如果客户端是恶意的,那么他只能访问自己的站点,而不能干扰 b.site.com。
我该如何实现这一点?我知道这可能与 Apache 中的设置有关,但我不确定。此外,我如何以编程方式创建这些子域?
答案1
如果您想提供 FTP 访问,则有两个问题:
- 限制每个站点的 FTP 访问。
- 限制每个站点的 PHP 访问。
对于 FTP 访问,您可以使用 vsftpd 及其 chroot 选项。我对此没有进一步的经验,因此无法提供更多详细信息。
对于 PHP 访问,您可以为不同的站点设置 chroot jail。这是通过 PHP-FPM 服务器模块完成的。
这个 chroot 设置非常难以正确实现,我花了很多时间进行调整才让它工作起来。
您必须在 PHP-FPM 配置文件中配置 chroot 操作。您将为每个域指定一个单独的 PHP 进程池,每个进程池都位于自己的 chroot jail 中。
然后,您必须为每个站点创建一个 chroot 环境。此环境包含系统库、配置文件等。有多种工具可帮助创建 chroot 环境。
最后,您必须配置 Apache 以通过 FastCGI 接口将每个域的 PHP 脚本传递给相应的 PHP-FPM。
关于以编程方式创建子域名,木偶是一个很有用的工具。但是,您可能必须自己创建脚本来管理您的设置。