Web应用程序框架,如西纳特拉(红宝石),玩(斯卡拉),电梯(斯卡拉)产生一个网络服务器侦听到特定端口。为什么要在框架Web服务器前使用http服务器?
我知道有一些原因,如安全性,集群和,在某些情况下,性能,这可能导致在我的Web应用程序之一的前面使用的Apache Web服务器。
你有没有从你的经验,这方面的任何原因?
Web应用程序框架,如西纳特拉(红宝石),玩(斯卡拉),电梯(斯卡拉)产生一个网络服务器侦听到特定端口。为什么要在框架Web服务器前使用http服务器?
我知道有一些原因,如安全性,集群和,在某些情况下,性能,这可能导致在我的Web应用程序之一的前面使用的Apache Web服务器。
你有没有从你的经验,这方面的任何原因?
以防万一你想从艾萨克Schluetter在Airbnb tech talk on January 30, 2013半官方的答案约40分钟他解决了节点是否稳定的问题,足以保证直接为互联网提供连接服务。他的回答基本上是“是”,没关系。所以,你可以做到这一点,你可能会从一个稳定和安全的角度罚款(假设你使用集群来处理应用程序服务器进程的意外终止),但高于当前运行的现实情况详见是,仍然几乎每个人都运行节点在单独的Web服务器或反向代理/缓存之后。
像nginx这样的服务器在处理非常高的并发负载方面也非常胜任,这是通过使用处理器模型完成的,该模型允许每个线程有很多并发请求。这是服务于静态内容的远高于吞吐量的原因的一部分。这可以让您的应用服务器专注于自己的工作。 –
确实。这就是我所说的“更高效”,但是从多方面来看,它们通常会比应用程序框架更适合:并发性,延迟和资源利用率。有时候,您的Web框架可能会针对这些指标中的一个或多个指标提供可比较的性能,但是当考虑全局时,仍然有充分的理由将您的应用程序框架置于专用Web服务器之后。 –
常常框架做你需要的一切,但有时候,最重要的是增加了一层可以给你喜欢的压缩,安全性,会话管理,负载平衡等。还有看似免费的功能,增加了网络服务器也可以引入安全问题,例如,您的Web服务器安全性可能比Lift本身更容易受到攻击。此外,一些Web框架具有极高的可扩展性,甚至可能会受到选择不当的Web服务器的阻碍。总之,如果你需要网络服务器的功能,而不是框架提供的功能,那么Web服务器可能是一个非常好的选择,但请记住,正确配置和定期更新是安全的补丁等
如果,例如,你只需要加密,或压缩,那么你会发现,添加正确的库或插件到您的架构可以做到这一点(和只)
我将添加:
使用代理http服务器,框架不需要保持打开http连接以提供计算的内容,然后可以开始提供其他请求。它充当缓冲区。
这是一个重新发明车轮的问题。大多数框架将为您提供开发环境,但对于生产来说,使用能够处理生产过程中出现的所有问题的商业/开源项目通常是一种很好的做法。
构建框架的人将有框架专注于构建服务器的人正在做同样的(完善)。
你想要什么样的细节? –
谢谢@DaveNewton。我改变了这个问题。我只需要已经完成的人的理由。 – juanpavergara
另请参见http://stackoverflow.com/q/2939393/152948 – hobbs