我有一个Symfony2应用程序,每个用户都有自己的子域。目前,它只是作为没有虚拟主机的默认Apache主机运行。当有人访问他们的子域时,它显然会调用主应用程序,该应用程序看起来就像它自己在虚拟主机中的安装。
现在,应用程序正在发展,一些用户想要额外的功能,包括运行自己的域别名和在这些别名上安装SSL证书。我也开始更多地考虑系统中每个用户的子域的安全性。我认为向前迈出的合乎逻辑的一步是为每个用户提供自己的虚拟主机。最终,这些虚拟主机应该对主应用程序具有读访问权限,对用于上传的自己的文件夹具有读/写访问权限,以及有限的系统资源。我正在寻找CloudLinux来解决最后一个问题。
我可以灵活地选择运行哪个web服务器,只要它运行良好且相对安全即可。谁能给我指出正确的方向来创建一个设置,允许PHP在web服务器中自动创建和编辑虚拟主机,并创建/编辑SSL证书和域别名?
这不是一个具体代码段的问题,而是一个采取最佳整体方法的问题。
发布于 2014-01-24 07:34:36
我不确定您说的是哪种类型的应用程序,但是当您提到SSL证书时,我认为其中涉及到了sensible 。
这是一个棘手的问题,它很大程度上取决于您想要授予您的客户什么权限(例如,运行他们自己的脚本/包,甚至SSH访问),或者他们的数据有多敏感。
一个完整的指南并不是stackoverflow的用途,有太多的方法和工具可以解决这种情况。
你最好的办法就是给你所有的客户提供他们自己的(V)服务器。
在其他一些小帮手和正确的工作流程中使用供应工具,如chef或puppet……您将在任何时间内设置好这些服务器,并且能够像维护单个服务器一样轻松地维护它们。
您甚至可以动态创建新的服务器实例。
即使您的所有客户端都运行相同的应用程序,并且只能访问web,当它们都在同一服务器上运行时,也总是存在很高的安全风险。
基本上,如果应用程序有一个真正的安全问题-很可能所有客户端都会受到影响,很容易被利用。(也不需要太多时间来确定在同一IP地址上运行的所有域)
只要不是每个应用程序都有不同的用户,每个应用程序都有自己的PHP (父)进程/池(即php-fpm) ...可以很容易地访问其他应用程序的配置、文件、数据库(,...)。
会话信息,临时上传目录(,...)很容易在这些应用程序之间暴露出来...
特别是在操作码缓存(即Zend Opcache或APC)或用户缓存(即APCu)到位的情况下,这些应用程序之间可能会发生冲突,并且由于PHP (父)进程可以访问所有其他应用程序的缓存的事实,可能很快会出现严重的安全问题。
在symfony2的上下文中,我谈论的是暴露的容器配置缓存或规则查询缓存。
抛开MySQL不谈(对于不同的数据库,不可能有单独的慢查询日志文件,每个应用程序只有一个进程)随着客户数量的增加,您将需要为这些进程提供大量内存,并且有无数的事情需要考虑。
您可以从以下位置开始
使用php-fpm,and服务器只需要访问公共资源,而不是一个单独的php文件。
for服务器将代理请求到php进程,该进程本身只需要大多数文件的读访问权限和对上传文件夹、会话保存路径、日志文件夹、缓存目录(,...)的写访问权限。
我不是说这是不可能实现的。但这并不是一项简单的任务,你应该真正知道自己在做什么。
帮你自己一个忙:
当我们谈论symfony2应用程序时--专业开发人员/自由职业者通常收取80美元/小时甚至更高的费用……向客户收取每月几美元的费用,购买他们自己的(云)服务器实例!
https://stackoverflow.com/questions/21320399
复制相似问题