新聞中心
?GOFrame?框架的?WebServer?配置管理非常方便,支持多種配置方式以及若干配置方法。

10年積累的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有錦州免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
配置對象
配置對象定義: https://pkg.go.dev/github.com/gogf/gf/v2/net/ghttp#ServerConfig
配置管理方法
方法列表: https://pkg.go.dev/github.com/gogf/gf/v2/net/ghttp#Server
簡要說明:
- 可以通過?
SetConfig?及?SetConfigWithMap?來設(shè)置。 - 也可以使用?
Server?對象的?Set*?/?Enable*?方法進(jìn)行特定配置的設(shè)置。 - 主要注意的是,配置項(xiàng)在?
Server?執(zhí)行?Start?之后便不能再修改,防止產(chǎn)生并發(fā)安全問題。
SetConfigWithMap方法
我們可以使用?SetConfigWithMap?方法通過?Key-Value?鍵值對來設(shè)置/修改?Server?的特定配置,其余的配置使用默認(rèn)配置即可。其中?Key?的名稱即是?ServerConfig?這個?struct?中的屬性名稱,并且不區(qū)分大小寫,單詞間也支持使用?-?/?_?/空格符號連接。
簡單示例:
s := g.Server()
s.SetConfigWithMap(g.Map{
"Address": ":80",
"ServerRoot": "/var/www/MyServerRoot",
})
s.Run()其中?ServerRoot?的鍵名也可以使用?serverRoot?, ?server-root?, ?server_root?, ?server root?,其他配置屬性以此類推。
一個比較完整的示例:
s := g.Server()
s.SetConfigWithMap(g.Map{
"address": ":80",
"serverRoot": "/var/www/Server",
"indexFiles": g.Slice{"index.html", "main.html"},
"accessLogEnabled": true,
"errorLogEnabled": true,
"pprofEnabled": true,
"logPath": "/var/log/ServerLog",
"sessionIdName": "MySessionId",
"sessionPath": "/tmp/MySessionStoragePath",
"sessionMaxAge": 24 * time.Hour,
"dumpRouterMap": false,
})
s.Run()
配置文件
?Server?對象也支持通過配置文件進(jìn)行便捷的配置。支持的配置選項(xiàng)以及配置說明請查看接口文檔說明,文檔中有詳細(xì)說明,以下章節(jié)不會對配置選項(xiàng)作介紹。
當(dāng)使用?g.Server?(單例名稱)獲取?Server?單例對象時,將會自動通過默認(rèn)的配置管理對象獲取對應(yīng)的?Server?配置。默認(rèn)情況下會讀取?server?.單例名稱配置項(xiàng),當(dāng)該配置項(xiàng)不存在時,將會讀取?server?配置項(xiàng)。
支持的配置文件配置項(xiàng)請參考?Server?配置管理對象屬性:https://pkg.go.dev/github.com/gogf/gf/v2/net/ghttp#ServerConfig
示例1,默認(rèn)配置項(xiàng)
[server]
address = ":80"
serverRoot = "/var/www/Server"隨后可以使用?g.Server()?獲取默認(rèn)的單例對象時自動獲取并設(shè)置該配置。
示例2,多個配置項(xiàng)
多個?Server?的配置示例:
[server]
address = ":80"
serverRoot = "/var/www/Server"
[server.server1]
address = ":8080"
serverRoot = "/var/www/Server1"
[server.server2]
address = ":8088"
serverRoot = "/var/www/Server2"我們可以通過單例對象名稱獲取對應(yīng)配置的?Server?單例對象:
// 對應(yīng) server.server1 配置項(xiàng)
s1 := g.Server("server1")
// 對應(yīng) server.server2 配置項(xiàng)
s2 := g.Server("server2")
// 對應(yīng)默認(rèn)配置項(xiàng) server
s3 := g.Server("none")
// 對應(yīng)默認(rèn)配置項(xiàng) server
s4 := g.Server()
示例3,較完整示例
比如上一個章節(jié)的示例,對應(yīng)的配置文件如下:
[server]
address = ":8199"
serverRoot = "/var/www/Server"
indexFiles = ["index.html", "main.html"]
accessLogEnabled = true
errorLogEnabled = true
pprofEnabled = true
logPath = "/var/log/ServerLog"
sessionIdName = "MySessionId"
sessionPath = "/tmp/MySessionStoragePath"
sessionMaxAge = "24h"
dumpRouterMap = false同理,配置屬性項(xiàng)的名稱也不區(qū)分大小寫,單詞間也支持使用?-?/?_?符號連接。也就是說以下配置文件效果和上面的配置文件一致:
[server]
address = ":8199"
serverRoot = "/var/www/Server"
indexFiles = ["index.html", "main.html"]
accessLogEnabled = true
errorLogEnabled = true
pprofEnabled = true
log-path = "/var/log/ServerLog"
session_Id_Name = "MySessionId"
Session-path = "/tmp/MySessionStoragePath"
session_MaxAge = "24h"
DumpRouterMap = false我們推薦配置文件中的配置項(xiàng)名稱統(tǒng)一使用小駝峰的格式。
上傳限制
?Server?對于客戶端提交的數(shù)據(jù)是由大小限制的,主要有兩個配置參數(shù)控制:
- ?
MaxHeaderBytes?:請求頭大小限制,請求頭包括客戶端提交的?Cookie?數(shù)據(jù),默認(rèn)設(shè)置為10KB。 - ?
ClientMaxBodySize?:客戶端提交的?Body?大小限制,同時也影響文件上傳大小,默認(rèn)設(shè)置為8MB。
由于安全性的考慮,默認(rèn)的上傳限制都不是很高,特別是?ClientMaxBodySize?的大小限制,在需要文件上傳的場景可適當(dāng)考慮調(diào)整,通過配置文件配置即可,例如:
[server]
maxHeaderBytes = "20KB"
clientMaxBodySize = "200MB"這樣便修改請求頭大小限制為?20KB?,文件上傳大小限制為?200MB?。如果不想做上傳大小做任何限制,那么將?clientMaxBodySize?設(shè)置為0即可。
日志配置
從v2版本開始,?Server?增加了對配置文件中?Logger?的配置項(xiàng)支持,主要是為了統(tǒng)一日志組件配置、并解決日志滾動切分的問題。配置示例:
[server]
address = ":8080"
[server.logger]
path = "/var/log/server"
file = "{Y-m-d}.log"
stdoutPrint = false
rotateSize = "100M"
rotateBackupLimit = 10
rotateBackupExpire = "60d"
rotateBackupCompress = 9
rotateCheckInterval = "24h"
配置示例
所有的配置項(xiàng)請參考?ServerConfig?對象屬性: https://pkg.go.dev/github.com/gogf/gf/v2/net/ghttp#ServerConfig
以下為配置示例文件:
[server]
# 基本配置
address = ":80" # 本地監(jiān)聽地址。默認(rèn)":80"
httpsAddr = ":443" # TLS/HTTPS配置,同時需要配置證書和密鑰。默認(rèn)關(guān)閉
httpsCertPath = "" # TLS/HTTPS證書文件本地路徑,建議使用絕對路徑。默認(rèn)關(guān)閉
httpsKeyPath = "" # TLS/HTTPS密鑰文件本地路徑,建議使用絕對路徑。默認(rèn)關(guān)閉
readTimeout = "60s" # 請求讀取超時時間,一般不需要配置。默認(rèn)為60秒
writeTimeout = "0" # 數(shù)據(jù)返回寫入超時時間,一般不需要配置。默認(rèn)不超時(0)
idleTimeout = "60s" # 僅當(dāng)Keep-Alive開啟時有效,請求閑置時間。默認(rèn)為60秒
maxHeaderBytes = "10240" # 請求Header大小限制(Byte)。默認(rèn)為10KB
keepAlive = true # 是否開啟Keep-Alive功能。默認(rèn)true
serverAgent = "GoFrame HTTP Server" # 服務(wù)端Agent信息。默認(rèn)為"GoFrame HTTP Server"
# 靜態(tài)服務(wù)配置
indexFiles = ["index.html","index.htm"] # 自動首頁靜態(tài)文件檢索。默認(rèn)為["index.html", "index.htm"]
indexFolder = false # 當(dāng)訪問靜態(tài)文件目錄時,是否展示目錄下的文件列表。默認(rèn)關(guān)閉,那么請求將返回403
serverRoot = "/var/www" # 靜態(tài)文件服務(wù)的目錄根路徑,配置時自動開啟靜態(tài)文件服務(wù)。默認(rèn)關(guān)閉
searchPaths = ["/home/www","/var/lib/www"] # 提供靜態(tài)文件服務(wù)時額外的文件搜索路徑,當(dāng)根路徑找不到時則按照順序在搜索目錄查找。默認(rèn)關(guān)閉
fileServerEnabled = false # 靜態(tài)文件服務(wù)總開關(guān)。默認(rèn)false
# Cookie配置
cookieMaxAge = "365d" # Cookie有效期。默認(rèn)為365天
cookiePath = "/" # Cookie有效路徑。默認(rèn)為"/"表示全站所有路徑下有效
cookieDomain = "" # Cookie有效域名。默認(rèn)為當(dāng)前配置Cookie時的域名
# Sessions配置
sessionMaxAge = "24h" # Session有效期。默認(rèn)為24小時
sessionIdName = "gfsessionid" # SessionId的鍵名名稱。默認(rèn)為gfsessionid
sessionCookieOutput = true # Session特性開啟時,是否將SessionId返回到Cookie中。默認(rèn)true
sessionPath = "/tmp/gsessions" # Session存儲的文件目錄路徑。默認(rèn)為當(dāng)前系統(tǒng)臨時目錄下的gsessions目錄
# Logging配置
logPath = "" # 日志文件存儲目錄路徑,建議使用絕對路徑。默認(rèn)為空,表示關(guān)閉
logStdout = true # 日志是否輸出到終端。默認(rèn)為true
errorStack = true # 當(dāng)Server捕獲到異常時是否記錄堆棧信息到日志中。默認(rèn)為true
errorLogEnabled = true # 是否記錄異常日志信息到日志中。默認(rèn)為true
errorLogPattern = "error-{Ymd}.log" # 異常錯誤日志文件格式。默認(rèn)為"error-{Ymd}.log"
accessLogEnabled = false # 是否記錄訪問日志。默認(rèn)為false
accessLogPattern = "access-{Ymd}.log" # 訪問日志文件格式。默認(rèn)為"access-{Ymd}.log"
# PProf配置
pprofEnabled = false # 是否開啟PProf性能調(diào)試特性。默認(rèn)為false
pprofPattern = "" # 開啟PProf時有效,表示PProf特性的頁面訪問路徑,對當(dāng)前Server綁定的所有域名有效。
# 其他配置
clientMaxBodySize = 810241024 # 客戶端最大Body上傳限制大小,影響文件上傳大小(Byte)。默認(rèn)為8*1024*1024=8MB
formParsingMemory = 1048576 # 解析表單時的緩沖區(qū)大小(Byte),一般不需要配置。默認(rèn)為1024*1024=1MB
nameToUriType = 0 # 路由注冊中使用對象注冊時的路由生成規(guī)則。默認(rèn)為0
routeOverWrite = false # 當(dāng)遇到重復(fù)路由注冊時是否強(qiáng)制覆蓋。默認(rèn)為false,重復(fù)路由存在時將會在啟動時報(bào)錯退出
dumpRouterMap = true # 是否在Server啟動時打印所有的路由列表。默認(rèn)為true
graceful = false # 是否開啟平滑重啟特性,開啟時將會在本地增加10000的本地TCP端口用于進(jìn)程間通信。默認(rèn)false
gracefulTimeout = 2 # 父進(jìn)程在平滑重啟后多少秒退出,默認(rèn)2秒。若請求耗時大于該值,可能會導(dǎo)致請求中斷
當(dāng)前文章:創(chuàng)新互聯(lián)GoFrame教程:GoFrameWEB服務(wù)開發(fā)-服務(wù)配置
文章出自:http://fisionsoft.com.cn/article/ccccjce.html


咨詢
建站咨詢
