Go 之 Beego 配置文件

发布于:2025-02-21 ⋅ 阅读:(14) ⋅ 点赞:(0)

        beego 目前支持 INI、XML、JSON、YAML 格式的配置文件解析,但是默认采用了 INI 格式解析。而配置文件的内容又包含 App配置、Web配置、监听配置、Session配置、Log配置。

        配置信息结构体代码

一、App配置

参数 类型 默认值 说明内容

AppName

string

"beego"

应用名称

RunMode

string

"dev"

应用运行模式:
dev - 开发模式,提供详细的日志输出和热重载功能
test - 测试模式,减少不必要的日志输出和内存占用
prod - 生产模式,优化性能并启用安全性相关的配置

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

false

是否开启热升级。如果设置为 true,服务器将在重启时平滑过渡。

ServerTimeOut

int64

0

服务器超时时间(秒)。设置为 0 表示无超时限制。

ListenTCP4

bool

false

是否监听 TCP4 地址。如果设置为 true,服务器将仅监听 IPv4 地址。

EnableHTTP

bool

true

是否启用 HTTP 监听服务。

HTTPAddr

string

"0.0.0.0"

HTTP 服务监听的地址。默认监听所有可用的网络接口。

HTTPPort

int

8080

HTTP 服务监听的端口。

AutoTLS

bool

false

是否自动启用 TLS。如果设置为 true,Beego 将尝试自动获取和管理 TLS 证书。

Domains

[]string

[]

自动 TLS 的域名列表。

TLSCacheDir

string

""

TLS 证书缓存目录。

EnableHTTPS

bool

false

是否启用 HTTPS 服务。

EnableMutualHTTPS

bool

false

是否启用双向 HTTPS 认证(客户端也需要提供证书)。

HTTPSAddr

string

"0.0.0.0"

HTTPS 服务监听的地址。默认监听所有可用的网络接口。

HTTPSPort

int

8081

HTTPS 服务监听的端口。

HTTPSCertFile

string

""

HTTPS 服务使用的证书文件路径。

HTTPSKeyFile

string

""

HTTPS 服务使用的私钥文件路径。

TrustCaFile

string

""

双向 HTTPS 认证所需的 CA 证书文件路径。

ClientAuth

tls.ClientAuthType

tls.NoClientCert

客户端认证类型。默认不需要客户端证书。

EnableAdmin

bool

false

是否启用管理端口,进程内监控模块

AdminAddr

string

"0.0.0.0"

管理端口监听的地址。默认监听所有可用的网络接口。

AdminPort

int

8088

管理端口监听的端口。

EnableFcgi

bool

false

是否启用 FastCGI 支持。

EnableStdIo

bool

false

是否启用标准 I/O 模式下的 FastCGI。需要与 EnableFcgi 一起使用。

三、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" 会话存储提供者(如 filememoryredis 等)。
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 配了也不能生效,需要硬编码才行,还没有去验证,不确定说法对不对,就没有备注出来,后续生产过程中碰到了再追加说明。