2014-01-23 45 views
4

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

,应用不断发展,一些用户希望更多的功能,包括运行自己的域别名和那些别名安装SSL证书。我也开始更多地考虑系统中每个用户的子域的安全性。我认为向前迈进的逻辑是为每个用户提供他们自己的虚拟主机。最终,这些虚拟主机应该具有对主应用程序的读取访问权限,对自己的文件夹进行读/写访问以进行上传和有限的系统资源。我正在研究CloudLinux来解决最后一个问题。

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

这不是一个特定的代码问题,而是一个最好的整体方法的问题。

+0

此问题违反了stackoverflow的规则,是一个混合“推荐工具”,属于[serverfault](http://serverfault.com)。我无法抗拒,并通过一些考虑回答:) – nifr

+0

感谢您的回答。这是我考虑的一个选项,并将进一步研究。看看我还能得到什么其他答案,如果它保持开放状态将会很有趣。 – James

回答

2

我不确定你在说什么类型的应用程序,但是当你提到SSL证书时,我假设有合理的数据参与。

这是一个棘手的问题,它在很大程度上取决于你希望授予给你的客户(即运行自己的脚本/包,甚至SSH访问)或如何明智他们的数据是什么样的权利。

的完整指南并不计算器是什么等方面存在太多的方法和工具来解决这种情况。

最好的办法是让所有的客户他们自己的(V)的服务器。

随着几个其他小助手之间的配置工具的使用和正确的工作流程......您可以立即设置这些服务器,并且能够像单个人一样轻松地维护它们服务器。

您甚至可以即时创建新的服务器实例。

即使所有客户端上运行同一个应用程序,并具有网络访问只存在在同一台服务器上运行时,他们都始终是一个很高的安全风险。

基本上,如果应用程序有一个真正的安全问题 - 有一个高的概率,您的所有客户都会受到影响,并可以很容易地被利用。 (确定在同一IP地址上运行的所有域也不需太多)

只要您没有针对每个应用程序和自己的PHP(父级)进程/池(即php-fpm)的不同用户,对于其中的每个人来说,访问其他应用程序的配置,文件,数据库(,...)将很容易。

会话信息,临时载目录(,...)很容易这些应用之间露出...

特别是随着操作码缓存(即Zend的Opcache或APC)或用户高速缓存(即APCu),这些应用程序之间可能会产生干扰,并且由于PHP(父)进程可以访问所有其他应用程序的缓存,因此可能会很快出现严重的安全问题。

在symfony2的上下文中,我正在讨论容器配置缓存或教条查询缓存被暴露。

MySQL的一边(没有可能有事情等分离慢查询日志文件对于每个应用程序一个单一的过程不同的数据库),就需要大量的RAM这些过程有越来越多的客户和有无数要考虑的事情

您可以通过

  • 创建为每个应用程序的用户开始...
  • 为所有这些为他们的每一个
  • 创建jailshells
  • 附加jailshell'd PHP池将您的网络服务器的权限限制在最低限度
  • ...

即使用php-fpm,web服务器只需要访问公共资产,而不需要单个php文件。

网络服务器将代理到php进程的请求,它本身只需要读取大部分文件的读取权限,并且可以写入upload-folder,session-save-path,log-folders,cache-dirs(,。 ..))。

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

帮自己一个忙:

当我们在谈论一个Symfony2的应用程序 - 在专业开发者/自由职业者通常收取80 $ /小时,更...收取客户为自己的几个$ /月(云)服务器实例!

相关问题