一个为什么要在一个框架,Web服务器前面使用的http服务器?(Why should one use

2019-07-03 19:20发布

Web应用程序框架,如西纳特拉(红宝石),玩(斯卡拉),电梯(斯卡拉)产生一个网络服务器侦听到特定端口。

我知道有一些原因,如安全性,集群和,在某些情况下,性能,这可能导致在我的Web应用程序之一的前面使用的Apache Web服务器。

你有没有从你的经验,这方面的任何原因?

Answer 1:

  • 任何Web应用程序的一部分被完全标准化和商品化的功能。 像nginx的或Apache成熟的Web服务器可以做以下的事情。 他们可以做以下的事情的方式,这是非常有可能更正确,更高效,更稳定,更安全,更熟悉的系统管理员,也更容易比什么,你可以在你的应用服务器重写配置。
    • 提供静态文件,如HTML,图像,CSS,JavaScript的,字体等
    • 处理虚拟主机(在单个IP地址的多个域)
    • URL重写
    • 主机名重写/重定向
    • TLS终止(感谢@ emt14)
    • 压缩(感谢@JacobusR)
  • 一个单独的Web服务器提供服务了“停机维护”页面,而应用程序服务器重新启动或崩溃的能力
  • 反向代理可以提供负载平衡和容错为你的应用程序框架
  • Web服务器具有内置的和结合特权端口(1024以下),为根,然后作为一个非特权用户执行测试的机制。 大多数Web应用程序框架默认不这样做。
  • 成熟的Web服务器战斗硬化和稳定。 通过稳定的,我的意思是,他们毫不夸张地说,几乎永不死机。 Web应用程序几乎可以肯定没有那么稳定。 这使您能够至少满足一个漂亮的错误页面给用户说你的应用程序的能力是下降的,而不是仅仅显示一个通用的“无法连接”的错误的Web浏览器。
    • 在点零星案例:nginx的处理攻击,否则将拒绝服务的Node.js: http://blog.nodejs.org/2013/10/22/cve-2013-4450-http-server-pipeline-flood-dos/

以防万一你想从艾萨克Schluetter在半官方的答案的Airbnb技术对话于2013年1月30日,大约40分钟,他谈到的节点是否稳定可靠,足以发球直接连接到Internet的问题。 他的回答基本上是“是”,它是好的。 所以,你可以做到这一点,你可能会从一个稳定和安全的角度罚款(假设你使用集群来处理应用程序服务器进程的意外终止),但高于当前运行的现实情况详见是,仍然几乎每个人都运行节点后面一个单独的Web服务器或反向代理/缓存。



Answer 2:

我想补充:

  • SSL处理
  • 对于如Apache许多模块的一些服务器(即NTML / Kerberos验证)
  • Web服务器是多的相比,你的应用程序,如提供静态一些事情变得更好。


Answer 3:

常常框架,你所需要的一切,但有时候,最重要的是增加了一层可以给你喜欢的压缩,安全性,会话管理,负载平衡等。还有看似免费的功能,增加了web服务器也可能会引入安全问题,例如,机会是你的Web服务器的安全可以通过自身受到损害比提升更容易。 此外,一些web框架的是非常可扩展性和可甚至生病的选择Web服务器的阻碍。

总之,如果你需要像不是由框架所提供的功能的Web服务器,然后Web服务器可能是一个非常好的选择,但请记住,这是一件事正确配置和安全补丁等定期更新

例如,如果,你只需要加密,或压缩,那么你会发现,添加正确的库或插件到您的架构可以做到这一点(和只)



Answer 4:

与代理HTTP服务器,该框架并不需要保持HTTP连接开放给了计算的内容,然后才能开始投放一些其他的要求。 它作为一个缓冲区。



Answer 5:

这是重新发明轮子的一个问题。 大多数框架会给你一个开发环境,但生产它通常是很好的做法,使用商业/开源项目,它是能够处理生产过程中出现的所有问题。

伙计们建立一个框架将有框架集中,而人建立一个服务器,都在做一样的(完善)。



文章来源: Why should one use a http server in front of a framework web server?