【问题标题】:Why does ASP.NET 5 on Linux require kestrel?为什么 Linux 上的 ASP.NET 5 需要红隼?
【发布时间】:2015-09-03 05:01:24
【问题描述】:

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

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

为什么 Nginx 服务器不能没有像这里这样的 Kestrel:http://www.mono-project.com/docs/web/fastcgi/nginx/ 工作?

或者说我离题了。我试图了解这种结构的原因是什么:

.NET Core(or mono) --> Kestrel --> Nginx

Kestrel 不是像 Nginx 一样只是另一个 Web 服务器,但功能却少了很多吗?

【问题讨论】:

    标签: nginx asp.net-core .net-core kestrel-http-server


    【解决方案1】:

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

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

    Nginx 通常用作静态内容的反向代理,您还可以对动态内容启用 gzip 压缩。 Kestrel 没有此功能。

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

    【讨论】:

    • 所以你的意思是,如果我安装 ASP.net 5,并使用带有快速 cgi 服务器的 nginx,我应该一切就绪?
    • 是的,如果你想使用Nginx 来使用它的功能。并且您的fastCGI 服务器必须能够运行ASP.Net 5。在我看来,最好使用Nginx 作为反向代理与Kestrel 或另一个简单的HTTP server。我认为您也可以使用Apache 作为反向代理而不是Nginx
    • 您好,您的链接已损坏
    • @PavelBiryukov 我更新了我的回复,因为我从我的仓库中删除了 FastCGI 服务器并且我现在使用了 Kestrel;它变得非常快
    • 到目前为止的理论。但在实践中,没有适用于 ASP.NET Core 的 FastCGI 主机(迄今为止) - 所以你实际上仅限于 Kestrel ......但至少缺少一条信息:当你使用 Kestrel 时,nginx 充当代理服务器,红隼是你的服务器。当您使用 fastcgi-server 时,nginx 充当服务器 + fastcgi-request-forwarder。
    【解决方案2】:

    死灵术。

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-08-24
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 2016-02-24
      • 2020-01-02
      • 2016-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多