Go 之 Beego 配置文件
beego 目前支持 INI、XML、JSON、YAML 格式的配置文件解析,但是默认采用了 INI 格式解析。而配置文件的内容又包含 App配置、Web配置、监听配置、Session配置、Log配置。
配置信息结构体代码
一、App配置
参数 | 类型 | 默认值 | 说明内容 |
---|---|---|---|
AppName | string | "beego" | 应用名称 |
RunMode | string | "dev" | 应用运行模式: |
RouterCaseSensitive | bool | true | 路由是否区分大小写。如果设置为 true,路由将严格区分大小写 |
ServerName | string | "beego" | 服务器名称,通常用于 HTTP 响应头中的 Server 字段 |
RecoverPanic | bool | true | 是否启用 panic 恢复机制。如果设置为 true,在发生 panic 时会尝试恢复。 |
RecoverFunc | func(*context.Context) | nil | 自定义的 panic 恢复函数,在发生 panic 时调用。 |
CopyRequestBody | bool | false | 是否复制请求体。如果设置为 true,请求体将被复制以便后续处理。(GET or HEAD or 上传文件请求除外) |
EnableGzip | bool | false | 是否启用 Gzip 压缩。如果设置为 true,响应内容会被压缩以减少传输数据量。 |
MaxMemory | int64 | 1<<24 (64M) | 文件上传时允许的最大内存使用量(字节) |
EnableErrorsShow | bool | true | 是否在控制台显示错误信息。 |
EnableErrorsRender | bool | true | 是否渲染错误页面。如果设置为 false,则不会渲染自定义的错误页面。 |
Listen | Listen | {} | 监听配置,包含监听地址、端口等信息。 |
WebConfig | WebConfig | {} | Web 配置,包含视图引擎、静态文件目录等信息。 |
Log | LogConfig | {} | 日志配置,包含日志级别、日志文件路径等信息。 |
二、监听配置
名称 | 类型 | 默认值 | 说明内容 |
---|---|---|---|
Graceful | bool |
| 是否开启热升级。如果设置为 |
ServerTimeOut | int64 |
| 服务器超时时间(秒)。设置为 |
ListenTCP4 | bool |
| 是否监听 TCP4 地址。如果设置为 |
EnableHTTP | bool |
| 是否启用 HTTP 监听服务。 |
HTTPAddr | string |
| HTTP 服务监听的地址。默认监听所有可用的网络接口。 |
HTTPPort | int |
| HTTP 服务监听的端口。 |
AutoTLS | bool |
| 是否自动启用 TLS。如果设置为 |
Domains | []string |
| 自动 TLS 的域名列表。 |
TLSCacheDir | string |
| TLS 证书缓存目录。 |
EnableHTTPS | bool |
| 是否启用 HTTPS 服务。 |
EnableMutualHTTPS | bool |
| 是否启用双向 HTTPS 认证(客户端也需要提供证书)。 |
HTTPSAddr | string |
| HTTPS 服务监听的地址。默认监听所有可用的网络接口。 |
HTTPSPort | int |
| HTTPS 服务监听的端口。 |
HTTPSCertFile | string |
| HTTPS 服务使用的证书文件路径。 |
HTTPSKeyFile | string |
| HTTPS 服务使用的私钥文件路径。 |
TrustCaFile | string |
| 双向 HTTPS 认证所需的 CA 证书文件路径。 |
ClientAuth | tls.ClientAuthType |
| 客户端认证类型。默认不需要客户端证书。 |
EnableAdmin | bool |
| 是否启用管理端口,进程内监控模块 |
AdminAddr | string |
| 管理端口监听的地址。默认监听所有可用的网络接口。 |
AdminPort | int |
| 管理端口监听的端口。 |
EnableFcgi | bool |
| 是否启用 FastCGI 支持。 |
EnableStdIo | bool |
| 是否启用标准 I/O 模式下的 FastCGI。需要与 |
三、Web配置
名称 | 类型 | 默认值 | 说明内容 |
---|---|---|---|
AutoRender | bool | true | 是否自动渲染模板。如果设置为 false ,需要手动调用渲染函数。 |
EnableDocs | bool | false | 是否启用内置文档服务。 |
FlashName | string | "BEEGO_FLASH" | Flash 消息存储在 Cookie 中的键名。 |
FlashSeparator | string | "BEEGOFLASH" | Flash 消息中的分隔符。 |
DirectoryIndex | bool | false | 是否启用目录索引。如果设置为 true ,当访问一个目录时会显示目录列表。默认不显示目录,返回 403 错误。 |
StaticDir | map[string]string | map[string]string{"/static": "static"} | 静态文件目录映射。键是 URL 路径前缀,值是本地文件系统路径。 |
StaticExtensionsToGzip | []string | []string{".css", ".js", ".json", ".svg"} | 需要 Gzip 压缩的静态文件扩展名列表。 |
StaticCacheFileSize | int | 10240 (10KB) | 静态文件缓存的最大文件大小(字节)。 |
StaticCacheFileNum | int | 100 | 静态文件缓存的最大文件数量。 |
TemplateLeft | string | "{{" | 模板左定界符。 |
TemplateRight | string | "}}" | 模板右定界符。 |
ViewsPath | string | "views" | 视图模板文件所在的目录路径。 |
EnableXSRF | bool | false | 是否启用 XSRF(跨站请求伪造)保护。 |
XSRFKey | string | "beegoxsrf" | XSRF Token 的密钥。 |
XSRFExpire | int | 0 (秒) | XSRF Token 的过期时间(秒)。 |
Session | SessionConfig | {} | 会话配置。 |
四、会话配置
名称 | 类型 | 默认值 | 说明内容 |
---|---|---|---|
SessionOn | bool | false | 是否启用会话管理。 |
SessionProvider | string | "memory" | 会话存储提供者(如 file , memory , redis 等)。 |
SessionName | string | "beegosessionID" | 存储会话 ID 的 Cookie 名称。 |
SessionGCMaxLifetime | int64 | 3600 (秒) | 会话的最大生存时间(秒),即垃圾回收的最大生命周期。 |
SessionProviderConfig | string | "" | 提供者的配置路径或连接字符串(例如文件路径、Redis 连接字符串等)。 |
SessionCookieLifeTime | int | 3600(秒) | Cookie 的生存时间(秒)。设置为 0 表示浏览器关闭时删除 Cookie。 |
SessionAutoSetCookie | bool | true | 是否自动设置会话 Cookie。 |
SessionDomain | string | "" | Cookie 的域名。如果不设置,则使用请求的域名。 |
SessionDisableHTTPOnly | bool | false | 是否禁用 HTTP Only 标志,允许跨域 JavaScript 访问 Cookie。 |
SessionEnableSidInHTTPHeader | bool | false | 是否启用通过 HTTP 头部存储/获取会话 ID。 |
SessionNameInHTTPHeader | string | "X-Session-ID" | 如果启用了 SessionEnableSidInHTTPHeader ,则指定 HTTP 头部的名称。 |
SessionEnableSidInURLQuery | bool | false | 是否启用从 URL 查询参数中获取会话 ID。 |
SessionCookieSameSite | http.SameSite | http.SameSiteDefaultMode | Cookie 的 SameSite 属性,默认为 DefaultMode 。 |
五、日志配置
名称 | 类型 | 默认值 | 说明内容 |
---|---|---|---|
AccessLogs | bool | false | 是否启用访问日志记录。 |
EnableStaticLogs | bool | false | 是否启用静态文件请求的日志记录,默认为 false 。 |
AccessLogsFormat | string | "" (空字符串) | 访问日志格式:JSON_FORMAT 或 APACHE_FORMAT ,或留空使用默认格式。 |
FileLineNum | bool | true | 是否在日志中包含文件名和行号。 |
Outputs | map[string]string | {} (空映射) | 日志输出适配器及其配置。键是适配器名称,值是对应的配置字符串。 |
六、配置示例
# 基本配置
AppName = MyBeegoApp
RunMode = dev
RouterCaseSensitive = true
ServerName = BeegoServer/1.0
RecoverPanic = true
CopyRequestBody = true
EnableGzip = true
MaxMemory = 10485760 # 10MB
EnableErrorsShow = true
EnableErrorsRender = true
# Web 配置
AutoRender = true
EnableDocs = false
FlashName = BEEGO_FLASH
FlashSeparator = BEEGOFLASH
DirectoryIndex = false
StaticDir = /static=static
StaticExtensionsToGzip = .css, .js, .json, .svg
StaticCacheFileSize = 10240
StaticCacheFileNum = 100
TemplateLeft = {{
TemplateRight = }}
ViewsPath = views
EnableXSRF = false
XSRFKey = beegoxsrftokenkey
XSRFExpire = 3600
# 会话配置
SessionOn = true
SessionProvider = file
SessionName = beegosessionID
SessionGCMaxLifetime = 3600
SessionProviderConfig = ./tmp/sessions
SessionCookieLifeTime = 0
SessionAutoSetCookie = true
SessionDomain =
SessionDisableHTTPOnly = false
SessionEnableSidInHTTPHeader = false
SessionNameInHTTPHeader = X-Session-ID
SessionEnableSidInURLQuery = false
SessionCookieSameSite = DefaultMode
# 监听配置
Graceful = false
ServerTimeOut = 30
ListenTCP4 = true
EnableHTTP = true
HTTPAddr = 0.0.0.0
HTTPPort = 8080
AutoTLS = false
Domains = example.com, www.example.com
TLSCacheDir = /path/to/tls/cache
EnableHTTPS = true
EnableMutualHTTPS = false
HTTPSAddr = 0.0.0.0
HTTPSPort = 8443
HTTPSCertFile = /path/to/cert.pem
HTTPSKeyFile = /path/to/key.pem
TrustCaFile = /path/to/ca.pem
ClientAuth = NoClientCert
EnableAdmin = false
AdminAddr = 0.0.0.0
AdminPort = 8088
EnableFcgi = false
EnableStdIo = false
# 日志配置
AccessLogs = true
EnableStaticLogs = false
AccessLogsFormat = APACHE_FORMAT
FileLineNum = true
Outputs = console: {"color": true}
Outputs = file: {"filename": "logs/beego.log"}
七、说明
有些资料显示有些配置在 app.conf 配了也不能生效,需要硬编码才行,还没有去验证,不确定说法对不对,就没有备注出来,后续生产过程中碰到了再追加说明。