与PHP / Symfony2应用程序中的虚拟主机连接

我有一个Symfony2
PHP应用程序,其中每个用户都有自己的子域.目前,它只是作为没有虚拟主机的默认Apache主机运行.当有人访问他们的子域时,它显然会调用主应用程序,它看起来就像它在虚拟主机中的安装一样.

现在,应用程序正在发展,一些用户需要其他功能,包括运行自己的域别名和在这些别名上安装SSL证书.我也开始更多地考虑系统中每个用户的子域的安全性.我认为向前迈出的逻辑步骤是为每个用户提供他们自己的虚拟主机.最终,这些虚拟主机应具有对主应用程序的读访问权限,对其自己的文件夹的读/写访问权限以及上载和有限的系统资源.我正在寻找CloudLinux来解决最后一个问题.

我对于运行哪个Web服务器很灵活,只要它运行良好且相对安全.任何人都可以指出我正确的方向来创建一个允许PHP在Web服务器中自动创建和编辑虚拟主机并创建/编辑SSL证书和域别名的设置吗?

这不是一段特定代码的问题,而是一个最佳整体方法的问题.

最佳答案 我不确定你在说什么样的应用程序,但是当你提到SSL证书时,我认为有合理的数据.

这是一个棘手的问题,它在很大程度上取决于您希望授予客户的权利(即运行他们自己的脚本/捆绑包甚至是SSH访问权限)或者他们的数据是多么明智.

完整的指南不是stackoverflow的用途,并且存在太多方法和工具来解决这种情况.

您最好的选择是为您的所有客户提供他们自己的(v)服务器.

通过在其他一些小帮手和正确的工作流程中使用厨师或木偶等配置工具……您可以立即设置这些服务器,并且能够像单个服务器一样轻松地维护它们.

您甚至可以动态创建新的服务器实例.

即使您的所有客户端都运行相同的应用程序并且仅具有Web访问权限,但在同一服务器上运行它们时总是存在很高的安全风险.

基本上,如果应用程序存在一个真正的安全问题 – 您的所有客户端很可能会受到影响并且很容易被利用. (确定在同一IP地址上运行的所有域并不需要太多)

只要你没有每个应用程序的不同用户和每个应用程序的自己的PHP(父)进程/池(即php-fpm)……就可以轻松访问其他应用程序的配置,文件,数据库(,…).

会话信息,临时上传目录(,…)很容易在这些应用程序之间公开…

特别是在操作码缓存(即Zend Opcache或APC)或用户缓存(即APCu)的情况下,这些应用程序之间可能存在干扰,并且由于PHP(父)进程具有访问权限,因此可能会出现严重的安全问题.所有其他应用程序的缓存.

在symfony2的上下文中,我所说的是暴露的容器配置缓存或学说查询缓存.

除了MySQL(不可能为不同的数据库分离慢速查询日志文件,每个应用程序只有一个进程),这些进程需要大量的RAM,客户数量越来越多,需要考虑无数的事情.

你可以先开始吧

>为每个应用程序创建用户……
>为所有人创建jailshells
>为每一个添加jailshell’d的php池
>将您的网络服务器的权利限制在最低限度
> ……

使用ie php-fpm,webserver只需要访问公共资产而不是单个php文件.

Web服务器将代理对php进程的请求,该进程本身只需要对大多数文件的读访问权以及对upload-folder,session-save-path,log-folders,cache-dirs(,…)的写访问权限. .

我不是说这是不可能实现的……但这不是一件容易的事,你应该真正知道自己在做什么.

帮自己一个忙:

我们正在谈论一个symfony2应用程序 – 专业开发人员/自由职业者通常收费80美元/小时甚至更多…向您的客户收取他们自己(云)服务器实例的几美元/月!

点赞