如何使用PHP进行3层

Ric*_*Ric 3 php

我要求客户端将我的PHP Web应用程序设置为3层.例如,我将在DMZ中的Apache上有一个Web服务器,但它不应包含任何数据库连接.它应该连接到承载业务对象但位于防火墙后面的中间服务器.然后这些对象连接到另一台服务器上的SQL群集.

我实际上是使用.NET完成的,但我不知道如何使用PHP设置我的堆栈.我想如果我将中间层创建为第二个Web服务器,我可以让我的UI前端层使用基于REST的Web服务调用中间层,但这看起来过于复杂.

主要原因是高级安全性:我们不能在DMZ第一层Web服务器上拥有任何密码.第二个原因是可扩展性 - 在不同层上有多个服务器可以处理请求.最后一个原因是部署 - 如果我可以将一组服务器脱机进行测试,然后再将它们重新投入生产,这将更容易.

是否有一个开源项目,显示如何做到这一点?我能找到的唯一例子是从另一台机器上的共享驱动器托管文件的Web服务器(类似于DotNetNuke如何假装为3层),但这不安全.

注意:我已经在SO中找到了这个答案,我确实看到了很多类似的问题,但没有找到任何真正回答的人.这不是关于数据访问层(虽然我会使用它) - 我的主要问题是UI和中间层之间的设计.

irc*_*ell 6

一种选择是使用FastCGI.

在第一层,只需将前端服务器(Apache,Lighttpd,NginX等)连接到第二层的FastCGI服务器即可.

另一种选择是从第一层到第二层的反向代理.这与第一个示例非常相似,只是第二层运行Web服务器,而FastCGI则不运行.

但你需要问自己的问题是为什么.您可以通过2层实现相同的功能,并且每个层只需要一个单独的网络(因此DMZ的服务器将具有2个网卡,每个网络一个).数据库仍然与世界隔离,但您不必担心在系统中添加不必要的复杂性...请记住,您添加的部分越多,失败的程度就越大......