您在 *nix 服务器上的 ASP.NET Core 生产环境中使用哪个 Web 服务器?

Posted

技术标签:

【中文标题】您在 *nix 服务器上的 ASP.NET Core 生产环境中使用哪个 Web 服务器?【英文标题】:Which web server are you using in production for ASP.NET Core on a *nix server? 【发布时间】:2016-04-09 18:00:42 【问题描述】:

随着 ASP.NET Core 的发布,我想知道对于 Linux 和 Mac 环境来说最好的托管选项是什么。是否有任何生产级 Web 服务器正在积极开发中?

我知道的唯一一个是框架附带的 Kestrel。从docs 来看,与 IIS 相比,Kestrel 似乎缺少几个功能

This *** 的答案表明 .NET Core 应用程序可以与任何 HTTP 服务器一起使用。这是否意味着它可以与 Apache 一起使用?如果是这样,它会缺少任何功能吗?我的印象是它只适用于基于 OWIN 的服务器。我错过了什么吗?

【问题讨论】:

【参考方案1】:

使用 Kestrel,这是前进的方向。参考这个:Change to IIS hosting model。

这是否意味着它可以与 Apache 一起使用?

是的,这确实是推荐的方法。但是,切勿将 Kestrel 直接暴露给外界。始终将其放在 nginx、IIS、HAProxy 或 Apache 等 Web 服务器后面。更多关于红隼:

ASP.NET 5: Kestrel ASP.NET 5: Considerations for Production Linux Environments

使用这些反向代理的一些示例:

NGINX Reverse Proxy and Load Balancing for ASP.NET 5 Applications ASP.NET Core Authentication in a Load Balanced Environment with HAProxy and Redis

【讨论】:

DotNetty 与 Kestrel 有何关联?它们服务于不同的利基市场吗? 为什么不建议将Kestrel暴露给外界? 如果你必须把 Kestrel 放在 IIS 后面,为什么要引入额外的复杂性,为什么不只使用 IIS? @tugberk,对不起,我错过了这与 *nix 机器有关。 来自docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/… “出于安全原因,边缘部署(暴露于来自 Internet 的流量)需要反向代理。Kestrel 相对较新,还没有完整的攻击防御机制。这包括但不限于适当的超时、大小限制和并发连接限制。”

以上是关于您在 *nix 服务器上的 ASP.NET Core 生产环境中使用哪个 Web 服务器?的主要内容,如果未能解决你的问题,请参考以下文章

process.send 是 *nix/Windows 上的同步/异步?

asp.net 核心中的红隼

ASP.NET vnext 和打开数据库

Web API 2.0 上的 COR 请求

IIS 6 上的 ASP.NET 路由

从 asp.net 调用服务器上的 exe