焦作 做 网站,三合一网站建设什么意思,阿里云个人网站备案,百度网页版支付宝Kestrel是一个基于libuv的跨平台ASP.NET Core web服务器#xff0c;libuv是一个跨平台的异步I/O库。ASP.NET Core模板项目使用Kestrel作为默认的web服务器。
Kestrel支持以下功能#xff1a;
HTTPS用于启用不透明升级的WebSockets位于Nginx之后的高性能Unix sockets
Kestr…Kestrel是一个基于libuv的跨平台ASP.NET Core web服务器libuv是一个跨平台的异步I/O库。ASP.NET Core模板项目使用Kestrel作为默认的web服务器。
Kestrel支持以下功能
HTTPS用于启用不透明升级的WebSockets位于Nginx之后的高性能Unix sockets
Kestrel 被.NET Core支持的所有平台和版本所支持
查看和下载示例代码 何时一起使用Kestrel和反向代理服务器
ASP.NET CORE 2.x 你可以单独或者与反向代理服务器(如 IIS, Nginx, or Apache一起使用Kestrel。反向代理从互联网接受HTTP请求预处理后转发给Kestrel. 如果Kestrel仅暴露与内网中有或没有反向代理的配置。 一个需要反向代理的场景是你有多个需要在一个服务器上运行并共享同一端口的应用。因为Kestrel不支持在多进程间共享同一端口和同一个IP在此情况下无法工作。当你配置Kestrel监听某个端口时它会接管所有的流量而不管主机标头是什么。反向代理可以共享出多个端口然后转发给Ketrel的唯一IP和端口。 即时反向代理不是必须的但在某些场景下使用反向代理是一个更好的选择
它可以限定你面对的网络区域.它可以提供多一个附加层以提供附加的的防护.它可以更好地与现有架构集成。使用它也可以简化负载均衡和SSL设置 -- 只要你的反向代理服务器需要SSL证书并且该服务器可以和你的应用在内部网中通过普通HTTP进行通信。 如何在ASP.NET CORE APP中使用KESTREL ASP.NET CORE 2.x Microsoft.AspNetCore.Server.Kestrel 包已经包含在 Microsoft.AspNetCore.All metapackage中.
ASP.NET Core 工程模板缺省使用 Kestrel 。在 Program.cs中, 模板代码为 CreateDefaultBuilder, 它用这句语句调用 UseKestrel
public static void Main(string[] args)
{BuildWebHost(args).Run();
}public static IWebHost BuildWebHost(string[] args) WebHost.CreateDefaultBuilder(args) .UseStartupStartup().UseKestrel(options {options.Listen(IPAddress.Loopback, 5000);options.Listen(IPAddress.Loopback, 5001, listenOptions {listenOptions.UseHttps(testCert.pfx, testPassword);});}).Build(); 如果你要配置Kestrel选项, 请在 Program.cs 如下例所示调用 UseKestrel
public static void Main(string[] args)
{BuildWebHost(args).Run();
}public static IWebHost BuildWebHost(string[] args) WebHost.CreateDefaultBuilder(args).UseStartupStartup() .UseKestrel(options { options.Listen(IPAddress.Loopback, 5000); options.Listen(IPAddress.Loopback, 5001, listenOptions { listenOptions.UseHttps(testCert.pfx, testPassword); }); }).Build(); Kestrel 选项 Kestrel web server有一些约束选项做面对互联网的不是时会非常用用。下面是你能设置的一些限制条件:
最大连接客户数最大请求体大小Maximum request body size最小请求提数据率Minimum request body data rate
你需要在 KestrelServerOptions 类的Limits属性中设置这些约束 。 Limits 属性控制 KestrelServerLimits 类的实例.
最大连接客户数
参考一下代码
.UseKestrel(options { options.Limits.MaxConcurrentConnections 100; options.Limits.MaxConcurrentUpgradedConnections 100;options.Limits.MaxRequestBodySize 10 * 1024;options.Limits.MinRequestBodyDataRate new MinDataRate(bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10));options.Limits.MinResponseDataRate new MinDataRate(bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10));options.Listen(IPAddress.Loopback, 5000);options.Listen(IPAddress.Loopback, 5001, listenOptions {listenOptions.UseHttps(testCert.pfx, testPassword);});
})
Maximum request body size 缺省值为30,000,000byte, 大约是28.6MB。 在ASP .NET CORE MVC 的APP中建议在action方法中使用 RequestSizeLimit 属性来重写它
[RequestSizeLimit(100000000)]public IActionResult MyActionMethod() 下面是一个配置整个应用内每一个请求的Maximum request body size的例子
.UseKestrel(options {options.Limits.MaxConcurrentConnections 100;options.Limits.MaxConcurrentUpgradedConnections 100; options.Limits.MaxRequestBodySize 10 * 1024;options.Limits.MinRequestBodyDataRate new MinDataRate(bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10));options.Limits.MinResponseDataRate new MinDataRate(bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10));options.Listen(IPAddress.Loopback, 5000);options.Listen(IPAddress.Loopback, 5001, listenOptions {listenOptions.UseHttps(testCert.pfx, testPassword);});
}) 你也可以在一个中间件中设置特定请求的值
app.Run(async (context) { context.Features.GetIHttpMaxRequestBodySizeFeature() .MaxRequestBodySize 10 * 1024 context.Features.GetIHttpMinRequestBodyDataRateFeature() .MinDataRate new MinDataRate(bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10)); context.Features.GetIHttpMinResponseDataRateFeature() .MinDataRate new MinDataRate(bytesPerSecond: 100, gracePeriod: TimeSpan.FromSeconds(10)); Kestrel的其他选项参考下面的类:
KestrelServerOptionsKestrelServerLimitsListenOptions 终端配置 缺省情况下ASP.NET CORE绑定 http://localhost:5000. 通过在KestrelServerOptions上调用Listen 或者ListenUnixSocket方法可以配置Kestrel监听的URL和端口。UseUrls, urls命令行参数ASPNETCORE_URLS环境变量也能工作定有一些限制参考这里。 绑定到一个TCP socket 一下Listen 方法绑定一个TCP socket, lumbda 选项配置一个SSL验证
public static void Main(string[] args)
{BuildWebHost(args).Run();
}public static IWebHost BuildWebHost(string[] args) WebHost.CreateDefaultBuilder(args).UseStartupStartup() .UseKestrel(options { options.Listen(IPAddress.Loopback, 5000); options.Listen(IPAddress.Loopback, 5001, listenOptions { listenOptions.UseHttps(testCert.pfx, testPassword); }); }).Build(); 请注意这个例子是如何用ListenOptions为部分终端配置SSL的。你可以用同一个API为部分终端配置其他Kestrel设置。 在windows系统中你可以使用PowerShell的命令 New-SelfSignedCertificate生成自签名SLL证书当然也有其他更好用的第三方工具生成你的自签名证书如
SelfCertMakecert UI 在macOS 和 Linux你可以使用 OpenSSL创建自己的自签名证书。更多信息请参考 Setting up HTTPS for development.
绑定到Unix socket
You can listen on a Unix socket for improved performance with Nginx, as shown in this example:
.UseKestrel(options {options.ListenUnixSocket(/tmp/kestrel-test.sock);options.ListenUnixSocket(/tmp/kestrel-test.sock, listenOptions {listenOptions.UseHttps(testCert.pfx, testpassword);});
})
Port 0
如果你指定端口号为0 Kestrel 会动态绑定一个可用的端口.下面的例子显示如何找到Kestrel运行时实际绑定了哪个端口
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{ var serverAddressesFeature app.ServerFeatures.GetIServerAddressesFeature();app.UseStaticFiles();app.Run(async (context) {context.Response.ContentType text/html; await context.Response.WriteAsync(pHosted by Kestrel/p); if (serverAddressesFeature ! null){ await context.Response .WriteAsync(pListening on the following addresses: string.Join(, , serverAddressesFeature.Addresses) /p);} await context.Response.WriteAsync($pRequest URL: {context.Request.GetDisplayUrl()}p);});
}
UserUrsl的限制
IIS的终端配置
URL prefixes
原文地址http://www.cnblogs.com/ccjungle/p/7514198.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注