Taurus .Net Core 微服務開源框架:Admin 外掛【4-1】

2023-06-29 12:02:11

前言:

繼上篇:Taurus .Net Core 微服務開源框架:Admin 外掛【3】 - 指標統計管理

本篇繼續介紹下一個內容:

1、系統設定節點:App - Config 介面

介面圖如下:

雙擊節點即可進入修改模式,如:

 

修改說明: 

不勾選持久化,該設定當前生效,下次重次失效,修改後設定值旁邊帶有【temp】說明文字;
勾選持久化,該設定會儲存在硬碟中,後續重啟也仍舊生效,修改後設定值旁邊帶有【durable】說明文字。

 節點說明:預設顯示的是 Mvc 的設定介面。

NetCore 版本 和 .Net Framework 版本的區別,就是 多了一個Kestrel 設定,其餘一致。

本節先講 Kestrel 相關的設定項:

2、系統設定節點:Kestrel 設定介面【含https啟用】

介面如下:

 設定說明:經過對 Kestrel 長時間的研究和原始碼分析:

Description 中帶有 【Restart】,即雙擊【Config Value】修改設定後,需要重啟應用才能生效,其餘都可即時生效。

設定詳細說明:

Urls:採用了NetCore原生的設定方式,可以用來設定預設http請求的埠,如果僅啟用https而不啟用http,可以不設定此引數。

AllowSynchronousIO:是否允許同步IO讀取,框架在接收Post資料有讀Body Stream,在Window環境此引數不影響,在Linux環境,需要設定為true。

AddServerHeader:此引數決定是否輸出請求頭:Server:kestrel。

SslPort:開啟https的埠,預設443,允許修改。

SslPath:只要把證書放在此目錄,即自動生效,支援以https方式存取,此目錄允許修改。

https 啟用範例:

從證書平臺申請證書後,以IIS部署方式(pfx檔案)下載,得到以域名為名稱的 zip 檔案:

解壓後,只要把 keystorePass.txt 改名成對應域名 gateway.cyqdata.com.txt 。

然後把兩個檔案放到 SslPath 對應設定的目錄即可。

框架簡化了複雜的設定,讓Kestrel啟用Https即這麼簡單。

3、系統設定節點:Kestrel - HostFilter 介面

介面如下:

設定說明:

AllowedHosts:允許的主機頭,預設*,接收所有主機,如果要限定域名存取,修改為域名即可(多個用逗號分隔),如:gateway.cyqdata.com

AllowEmptyHosts:允許請求頭不帶Host,這個是相容http1.0協義的東西,如果不想相容,可以不用管。

IncludeFailureMessage:如果觸發限制,是否輸出提示文字,即【400狀態碼:無效主機頭】。

4、系統設定節點:Kestrel - Limit - Connection 介面

 介面如圖:

設定說明:

預設設定是long.MaxValue,即無限制連結數,可以修改,但需要重啟應用才能生效。

由於 Kestrel 的內部實現造成此設定的不友好性,框架在 Limit - Rate 設定中,增加了以下設定項:

Limit.Rate.MaxConcurrentConnections,同樣實現並行總數限制,並可即修改即生效。

5、系統設定節點:Kestrel - Limit - Connection 介面

介面如下:

 設定說明:

MaxRequestBodySize:僅限制HTTP請求中請求體的大小(位元組,預設long.MaxValue)。
MaxRequestBufferSize:限制整個HTTP請求的大小(位元組,預設long.MaxValue),包括請求行、請求頭和請求體。
MaxRequestLineSize:請求行長度(位元組),如:GET /api/users HTTP/1.1
MaxRequestHeaderCount:最大請求頭數量。
MaxRequestHeadersTotalSize:最大請求頭位元組數。

前面2個引數需要重啟應用才生效;

後面3個引數,修改比較危險,容易造成應用程式無法存取,因此框架內部做了最小值限制。

6、系統設定節點:Kestrel - Limit - Response 介面

介面如圖:

 設定說明:

MaxResponseBufferSize:伺服器端允許輸出的最大位元組數。

7、系統設定節點:Kestrel - Limit - Timeout 介面

介面如圖:

 設定說明:

KeepAliveTimeout:和使用者端最長保持連結時間,以分鐘為單位。
RequestHeadersTimeout:請求頭接收的最長時間,以秒為單位。

總結:

 對個別 Kestel 引數,沒有呈現出來,比如 http2 或 http3 的設定,後續會考量儘量補全。