Kestrel是一個基于libuv的跨平臺.NET Core web服務器,libuv是一個跨平臺的異步I/O庫。ASP.NET Core模板項目使用Kestrel作為默認的web服務器。
Kestrel支持以下功能:
HTTPS
用于啟用不透明升級的WebSockets
位于Nginx之后的高性能Unix sockets
Kestrel 被.NET Core支持的所有平臺和版本所支持
何時使用Kestrel和反向代理服務器
如果你的應用只接收來自內部網絡的請求,你可以只使用Kestrel本身
如果你將你的應用部署在公共網絡上,我們建議你使用IIS,Nginx或者Apache作為反向代理服務器。一個反向代理服務器接收來自網絡的HTTP請求并且在經過一些初步處理后將請求傳遞到Kestrel服務器。
出于安全性的理由,反向代理常常被edge deployments所采用。因為Kestrel相對較新,對抵御安全攻擊至今還沒有一個完整的功能補充。安全性處理包括但不限于適當的超時,大小的限制,以及并發連接限制等問題。
另一個需要反向代理的場景是,你有多個需要在單獨的服務器上運行并分享同一端口的應用。因為Kestrel不支持在多進程間分享同一端口,所以應用并不能直接和Kestrel合作。當你在某個端口上配置Kestrel運行偵聽時,不算主機頭如何標識,Kestrel會為該端口處理所有的流量。反向代理可以為多個應用共享唯一端口并將流量發送給Kestrel。
即使不需要反向代理服務器,使用它也可以簡化負載均衡和SSL設置 -- 只要你的反向代理服務器需要SSL證書,并且該服務器可以和你的應用在內部網中通過普通HTTP進行通信。
我們通過代碼看一下:
? Kestrel是一個基于libuv的跨平臺web服務器
? 在.net core項目中就可以不一定要發布在iis下面了
?Kestrel體驗
?
?可以使用useUrls來設置一個請求的地址
?vs2017中運行可以直接選擇項目,而不選擇iis
??
? 或者直接使用命令在運行
? 在文件夾中打開,在項目中program.cs的位置打開命令行
?
?先執行dotnet build 編譯一下項目
?
?然后執行dotnet run啟動項目
??
?當然那個編譯的命令也可以不執行,項目生成一下就好
?就可以直接訪問了
更多技術請關注