![使用专用 Web 服务器有哪些优点?](https://linux22.com/image/93080/%E4%BD%BF%E7%94%A8%E4%B8%93%E7%94%A8%20Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9C%89%E5%93%AA%E4%BA%9B%E4%BC%98%E7%82%B9%EF%BC%9F%20.png)
详细来说,使用专用的Web服务器(即lighttpd或nginx)并按照Web服务器的指示运行程序(即Swift / Python)有什么优势?
具体来说,这与简单地运行 Web 框架(即 Perfect / Flask)并使用其内置路由相比如何?
答案1
这是一个标准的“Web 安全架构”问题。
典型的 3 层应用程序将具有
- Web层
- 应用层
- 数据库(或其他后端)层。
这个想法是为了帮助分离职责。
因此“Web 层”是所有传入流量的初始终止点。您可能已经在这里完成了 SSL 工作。此时,您可以注入诸如“Web 应用程序防火墙”之类的内容,它可以检查传入流量是否存在 SQL 注入攻击或路径遍历攻击等内容。
在此终止的优点是像 apache 或 nginx 或 lighttpd 这样的前端服务专用于处理恶意流量、记录错误请求、更加“安全”。有人提出了一种攻击 Web 服务器的新方法(TCP 位设置错误的数据碎片?),您将确信顶级 Web 服务器将得到修补;你的网络框架可能并没有那么重要。
只有“干净”的流量才会传递到应用程序层(此通信也可能是 HTTP,但来自更可信的来源)。您的应用程序可以与后端对话。
现在,理想情况下,这些层也应该位于具有网络路由规则的不同服务器上,以便外部请求服务根本无法到达“应用程序服务器”。流量到达应用程序服务器的唯一方式是通过前端 Web 服务器,即使在较低的 TCP 层也是如此。但即使没有这个,您也可以获得一些安全优势。
第二个优点意味着您的前端服务可以是 HA 代理,将负载分配到多个后端应用程序服务器。
第三个优点是允许您从前端 Web 服务器提供静态文件(例如图像、CSS、javascript),并且只有大量特定于应用程序的内容才会传递到您的应用程序。可以添加缓存层等。这里可以带来性能优势。
因此,从企业的角度来看,有很多充分的理由将它们分开。但它确实需要更多的配置和设置工作。
你想走多远是个人喜好。