我正在开发一个 ASP.NET 应用程序,该应用程序将在 Linux/Mono 下运行,原因有很多(坦率地说,主要是为了远离 IIS)。当然,我想到的第一个 Web 服务器是 Apache。但是,尽管 Apache 有很多优点,但它会增加很多开销。此外,我正在构建的应用程序需要高度可扩展,性能是主要关注点之一。
Apache 显然享有极高的声誉,其记录不言而喻,但我不需要反向代理或负载平衡之类的东西,因为专用网络设备可用于此。因此永远不会使用 Apache 的这些模块。
所以基本上我的问题是:既然 Nginx 似乎完全符合需求,那么我应该注意什么吗?例如,Nginx 是否以特别安全而闻名?当检测到安全漏洞时,修补速度有多快?
欢迎对将这两个服务器与 Mono 结合使用的利弊提出任何见解。
答案1
问问自己这个应用程序要做什么
大量文件 I/O?那么 Apache 的线程模型就很好,文件 I/O 正在阻塞
与客户端的长时间连接?那么 nginx 的事件模型更合适,网络 I/O 可以是非阻塞的
最诚实的回答是,您不太可能达到任何网络服务器的架构限制。只需使用您最舒服的方式。针对 apache 线程模型的“开销”论点仅在高流量场景中才有意义。
答案2
Sergey Sysoev——nginx 的作者——经常发布补丁。该 Web 服务器非常好,能够在 FCGI 的帮助下有效地运行任何东西,无论是 PHP 还是 Mono 还是其他什么。Nginx 在提供静态内容方面也非常高效,并且所有这些保持活动和慢速活动占用的内存非常少。此外,它还具有很好的功能和模块,可以抵御 DDoS 攻击。
但是,每种脚本语言都很慢。如果性能是主要考虑因素,也许你最好尝试用 C 语言创建 FCGI 应用程序?
干杯!:)
答案3
我个人用以下方法替换了我的 Nginx 设置切诺基
到目前为止,一切都运行得一样快,而且我有一个 Web 界面。它还支持 Mono。
答案4
@ABrown:你对 ASP.Net 的解释是错误的。
例如,应用程序/网站可以用 C# 编写,然后编译为中间字节码 (IL)。这是第一阶段。
当用户首次访问网站时,字节码就会被编译为机器码。
随后访问该网站将调用机器代码(它不会被解析或解释,而是本地执行)。