我使用 ColdFusion 已有很长时间了。我脑子里一直有个想法:为了获得最大的安全性,您应该将 Web 服务器与 ColdFusion 服务器物理分开。因此,我一直使用 Adobe 所称的“分布式模式”来实现这一点。IIS 位于一台服务器上,而 ColdFusion 位于另一台服务器上。它们像往常一样通过 Web 连接器进行通信,尽管是通过网络。
几年来,我遇到过一些帖子,其中提到使用反向代理与在分布式模式下运行一样安全。使用反向代理设置,Web 服务器和 ColdFusion 服务器位于同一台物理机器上,但有一个代理服务器处理请求并充当 Web 服务器(基本上)。但在我看来,物理分离更安全。
互联网上很难找到任何明确的建议。即使在ColdFusion 11 文档-有关 Web 服务器配置工具的更多信息(包括有关多宿主和分布式使用的信息),请参阅配置和管理 ColdFusion 指南。(尽管在引用的页面上并没有太多相关信息。)这两种设置似乎在各种博客和帖子中都有提及,但我发现人们更常使用反向代理设置而不是分布式模式设置。没有什么具体的东西,只是我在网上搜索后的看法。在分布式模式下运行,Web 服务器和 ColdFusion 服务器位于不同的服务器上,在设置时肯定会增加一层复杂性。静态文件位于 Web 服务器上,CFML 文件位于 ColdFusion 服务器上。等等。当您使用第三方产品时,这可能很难正确配置。
所以我的问题是,假设其他所有条件都相同,为了获得最大安全性,您是使用分布式模式还是反向代理设置?以及您这样做的原因。
不幸的是,ColdFusion 锁定指南让事情变得混乱。以下是我发现的。
在里面ColdFusion 9 锁定指南(第 14-15 页)其中指出:
您可能还考虑以分布式模式安装 ColdFusion。这允许 Web 服务器驻留在与 ColdFusion 服务器物理上分开的服务器上。您还可以将多个 Web 服务器连接到单个 ColdFusion 服务器(在 ColdFusion 9 文档中,这称为多宿主)。这种分离可以提供额外的安全性,在需要最大安全性的环境中应考虑使用。要安装分布式模式,请选择内置 Web 服务器选项。有关配置分布式模式的信息,请参阅http://www.adobe.com/support/coldfusion/administration/cfmx_in_distributed_mode/cfmx_in_distributed_mode02.html有关多宿主的详细信息,请参阅http://help.adobe.com/en_US/ColdFusion/9.0/Admin/WSc3ff6d0ea77859461172e0811cbf364104-7fc3.html。
另一种将面向公众的 Web 服务器与 ColdFusion 服务器分开的方法是使用反向代理。在反向代理设置中,ColdFusion 服务器仍安装有 Web 服务器,但所有外部客户端请求均由代理服务器处理,某些请求将发送到 ColdFusion 服务器进行处理。
在里面ColdFusion 10 锁定指南(第 27 页)该声明被缩减为以下内容:
为了实现最大程度的安全,请考虑在不同的物理服务器上运行 Web 服务器和 ColdFusion。将面向公众的 Web 服务器和 ColdFusion 服务器分开的一种方法是使用反向代理。
在反向代理设置中,ColdFusion 服务器仍将安装 Web 服务器,但所有外部客户端请求都将由代理服务器处理,只有特定请求才会发送到 ColdFusion 服务器进行处理。请参阅 Web 服务器文档以设置反向代理。
并且在ColdFusion 11 锁定指南两者都没有提及。它似乎应该在第 11 页左右,其他文档中的语句以及运行 Web 服务器配置工具都位于该页。我很好奇 Pete 为什么将其从最新文档中删除。
当我使用 Adobe ColdFusion 时,我也用 Railo 标记了这个问题以获得更多输入。
答案1
您混淆了“分布式模式”(将 Web 服务器和 CF 服务器放在不同的机器上)与使用反向代理是相互排斥的。实际上,它们是两个不同的问题。反向代理只是使用标准 Web 连接器的一种替代方案。它只是让您的 Web 服务器(IIS、Apache、Nginx)将 CFML 页面的请求重定向到 CF 机器上给定主机/端口上的 HTTP/HTTPS 或 AJP 端口。您可以配置反向代理以代理到本地主机或网络上的任何其他服务器,只要相应的端口是打开的。
例如,您可以在 Tomcat 的 8009 端口上启用 AJP 监听器。然后在您的 Apache Web 服务器(可以是网络上的任何位置)上使用 proxy_ajp 模块将 .cfm 文件的代理请求反向发送到该端口。
我个人从未处理过分布式模式,因为针对我的 Web 服务器的攻击媒介似乎要少得多。但如果您选择使用“分布式模式”,则可以使用常规连接器或反向代理来实现。这取决于您。
答案2
分布式模式或反向代理设置将提供大致相似的安全级别,但分布式模式将具有额外的高可用性和可靠性服务器场景。