我要求客户端将我的PHP Web应用程序设置为3层。例如,我将在DMZ中的Apache上有一个Web服务器,但它不应包含任何数据库连接。它应该连接到承载业务对象但位于防火墙后面的中间服务器。然后这些对象连接到另一台服务器上的SQL集群。
我实际上是使用.NET完成的,但我不确定如何使用PHP设置我的堆栈。我想如果我将中间层创建为第二个Web服务器,我可以使用基于REST的Web服务将我的UI前层调用中间层,但这看起来过于复杂。
主要原因是高级安全性:我们在DMZ第一层Web服务器上没有任何密码。第二个原因是可扩展性 - 在不同层上有多个服务器可以处理请求。最后一个原因是部署 - 如果我可以将一组服务器脱机进行测试,然后再将它们重新投入生产,这将更容易。
是否有开源项目显示如何执行此操作?我能找到的唯一例子是从另一台机器上的共享驱动器托管文件的Web服务器(类似于DotNetNuke如何假装为3层),但这不安全。
注意:我已经在SO中查找了这个答案,我确实看到了很多类似的问题,但没有找到任何真正回答的人。这不是关于数据访问层(虽然我会使用它) - 我的主要问题是UI和中间层之间的设计。