我已经与 ColdFusion 合作了很长时间。在我的脑海中已经植入的东西是,为了获得最大的安全性,您应该将 Web 服务器与 ColdFusion 服务器物理分离。所以我一直使用 Adobe 所说的“分布式模式”来完成这项工作。IIS 在一台服务器上,而 ColdFusion 在另一台服务器上。它们像往常一样通过网络连接器进行通信,尽管是通过网络进行的。
几年来,我遇到过一些帖子,其中提到使用反向代理与在分布式模式下运行一样安全。通过反向代理设置,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 服务器配置工具的位置。我很好奇为什么皮特从最新的文件中删除了这个。
当我使用 Adobe ColdFusion 时,我也用 Railo 标记了这个问题以获取更多信息。
您将“分布式模式”(将 Web 服务器和 CF 服务器放在不同的盒子上)与使用反向代理相互排斥。实际上,它们是两个独立的问题。反向代理只是使用标准 Web 连接器的替代方案。它只会使您的 Web 服务器(IIS、Apache、Nginx)将对 CFML 页面的请求重定向到 CF 框上给定主机/端口上的 HTTP/HTTPS 或 AJP 端口。只要适当的端口打开,您就可以将反向代理配置为代理到本地主机或网络上的任何其他服务器。
前任。您可以在 Tomcat 的 8009 端口上启用 AJP 侦听器。然后在您的 Apache Web 服务器(可以在您的网络上的任何位置)上,您使用 proxy_ajp 模块将 .cfm 文件的代理请求反向到该端口。
我从来没有亲自处理过分布式模式,因为针对我的 Web 服务器的攻击向量似乎要少得多。但是,如果您选择使用“分布式模式”,则可以使用 stock 连接器或反向代理。由你决定。
分布式模式或反向代理设置将提供大致相似的安全级别,但分布式模式将具有额外的高可用性和可靠性服务器场景。