为什么Linux上的ASP.NET 5需要kestrel?

Fre*_*uth 9 nginx .net-core kestrel-http-server asp.net-core

我试图在Linux上安装ASP.NET 5时理解整个Web /框架/应用程序堆栈.

我读过的所有说明,包括这一条都没有真正回答我的问题:

为什么Nginx服务器不能在没有 Kestrel的情况下工作:http://www.mono-project.com/docs/web/fastcgi/nginx/

或者我离开了.我试图了解这个结构的原因是什么:

.NET Core(or mono) --> Kestrel --> Nginx
Run Code Online (Sandbox Code Playgroud)

Kestrel不是像Nginx这样的另一个Web服务器,但功能却少得多吗?

agu*_*ars 8

ASP.NET Core(ASP.Net 5)不需要Kestrel!

你是对的,Kestrel只是一个简单的HTTP服务器,具有一小部分功能.您可以在LinuxMac上运行不带Kestrel的ASP.NET Core,但您必须拥有HTTP服务器或fastCGI服务器.

Nginx通常用作静态内容的反向代理,您还可以对动态内容启用gzip压缩.红隼没有这个功能.

您还可以使用所需的特定HTTP功能编写自己的HTTP服务器(例如HTTP2).

  • 是的,如果你想使用`Nginx`来使用它的功能.你的`fastCGI`服务器必须能够运行`ASP.Net 5`.在我看来,最好使用`Nginx`作为反向代理与`Kestrel`或另一个简单的`HTTP服务器`.我认为你也可以使用`Apache`作为反向代理而不是`Nginx`. (2认同)

Ste*_*ger 5

死灵法术。

是的,它实际上确实需要 Kestrell。
正如 Agua 所说,理论上,它也可以在除 Kestrell 之外的其他一些 http 服务器上运行,该服务器可以运行 .NET Core 或通过 FastCGI。

但是,AFAIK,Kestrell 是目前唯一可以真正做到这一点的 http 服务器。
因为 AFAIK,用.NET Core编写的 FastCGI 服务器/库(还)不存在。

现在,如果您想将 .NET Core 与 nginx 或 Apache 一起使用,您所能做的就是将请求反向代理到 kestrell。