我正在开发一个ASP.NET应用程序,它将在Linux / Mono下运行,原因很多(主要是远离IIS,坦率地说)。 当然,我想到的第一个Web服务器是Apache。 但是,Apache的所有优点都增加了很多开销。 另外,我正在构build的应用程序需要高度可扩展性,性能是主要关注点之一。
Apache很显然是一个非常好的声誉,它的logging本身就是有说服力的,但是我不需要反向代理或负载平衡之类的东西,因为专用的networking设备将用于此目的。 所以Apache的这些模块将永远不会被使用。
所以基本上我的问题是:由于Nginx似乎完全适合需要,有什么告诫,我应该知道的? 比如说Nginx是否比较安全? 当检测到安全漏洞时,他们打补丁的速度有多快?
欢迎任何与Mono结合使用这些服务器的优点和缺点。
问问你自己该怎么做
大量的文件I / O? 那么Apache的线程模型就好,文件I / O阻塞
与客户长期连接? 那么nginx的事件模型是比较合适的,networkingI / O可以是非阻塞的
最诚实的答案是,它不太可能会达到任何networking服务器的架构限制。 只要使用你最喜欢的任何东西。 针对apache线程模型的“开销”参数只在高stream量的情况下才有意义。
Sergey Sysoev – nginx的作者 – 经常发布补丁。 该networking服务器是非常好的,并能够有效地运行任何东西的帮助下FCGI,无论是PHP或单声道或其他任何东西。 Nginx在提供静态内容方面也非常有效率,并且对所有这些保持活着和缓慢的内容使用很less的内存。 此外,它还有很好的function和模块可以抵御DDoS攻击。
但是看,每种脚本语言都很慢。 如果性能是主要问题,也许你会更好地尝试在C中创build一个FCGI应用程序?
干杯! 🙂
我个人用切诺基取代了我的Nginx设置
到目前为止,一切运行的速度一样快,我有一个Web界面的顶部。 它也支持Mono。
@abrown:你解释ASP.Net的观点是错误的。
应用程序/网站可以用C#编写,然后编译成中间字节码(IL)。 这是第一阶段。
当用户最初访问网站时,字节码被编译成机器码。
随后访问网站调用机器代码(它不会被parsing或解释,它本身执行)。