当前位置: 首页 > news >正文

Go 之 Beego 配置文件

        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 上传文件请求除外)

EnableGzipboolfalse是否启用 Gzip 压缩。如果设置为 true,响应内容会被压缩以减少传输数据量。
MaxMemoryint641<<24 (64M)文件上传时允许的最大内存使用量(字节)
EnableErrorsShowbooltrue是否在控制台显示错误信息。
EnableErrorsRenderbooltrue是否渲染错误页面。如果设置为 false,则不会渲染自定义的错误页面。
ListenListen{}监听配置,包含监听地址、端口等信息。
WebConfigWebConfig{}Web 配置,包含视图引擎、静态文件目录等信息。
LogLogConfig{}日志配置,包含日志级别、日志文件路径等信息。

二、监听配置

名称

类型

默认值

说明内容

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配置

名称类型默认值说明内容
AutoRenderbooltrue是否自动渲染模板。如果设置为 false,需要手动调用渲染函数。
EnableDocsboolfalse是否启用内置文档服务。
FlashNamestring"BEEGO_FLASH" Flash 消息存储在 Cookie 中的键名。
FlashSeparatorstring"BEEGOFLASH" Flash 消息中的分隔符。
DirectoryIndexboolfalse是否启用目录索引。如果设置为 true,当访问一个目录时会显示目录列表。默认不显示目录,返回 403 错误。
StaticDirmap[string]stringmap[string]string{"/static": "static"}静态文件目录映射。键是 URL 路径前缀,值是本地文件系统路径。
StaticExtensionsToGzip[]string[]string{".css", ".js", ".json", ".svg"}需要 Gzip 压缩的静态文件扩展名列表。
StaticCacheFileSizeint10240 (10KB)静态文件缓存的最大文件大小(字节)。
StaticCacheFileNumint100静态文件缓存的最大文件数量。
TemplateLeftstring"{{"模板左定界符。
TemplateRightstring"}}"模板右定界符。
ViewsPathstring"views"视图模板文件所在的目录路径。
EnableXSRFboolfalse是否启用 XSRF(跨站请求伪造)保护。
XSRFKeystring"beegoxsrf"XSRF Token 的密钥。
XSRFExpireint0 (秒)XSRF Token 的过期时间(秒)。
SessionSessionConfig{}会话配置。

四、会话配置

名称类型默认值说明内容
SessionOnboolfalse是否启用会话管理。
SessionProviderstring"memory"会话存储提供者(如 filememoryredis 等)。
SessionNamestring"beegosessionID"存储会话 ID 的 Cookie 名称。
SessionGCMaxLifetimeint643600 (秒)会话的最大生存时间(秒),即垃圾回收的最大生命周期。
SessionProviderConfigstring""提供者的配置路径或连接字符串(例如文件路径、Redis 连接字符串等)。
SessionCookieLifeTimeint3600(秒)Cookie 的生存时间(秒)。设置为 0 表示浏览器关闭时删除 Cookie。
SessionAutoSetCookiebooltrue是否自动设置会话 Cookie。
SessionDomainstring""Cookie 的域名。如果不设置,则使用请求的域名。
SessionDisableHTTPOnlyboolfalse是否禁用 HTTP Only 标志,允许跨域 JavaScript 访问 Cookie。
SessionEnableSidInHTTPHeaderboolfalse是否启用通过 HTTP 头部存储/获取会话 ID。
SessionNameInHTTPHeaderstring"X-Session-ID"如果启用了 SessionEnableSidInHTTPHeader,则指定 HTTP 头部的名称。
SessionEnableSidInURLQueryboolfalse是否启用从 URL 查询参数中获取会话 ID。
SessionCookieSameSitehttp.SameSitehttp.SameSiteDefaultModeCookie 的 SameSite 属性,默认为 DefaultMode

五、日志配置

名称类型默认值说明内容
AccessLogsboolfalse是否启用访问日志记录。
EnableStaticLogsboolfalse是否启用静态文件请求的日志记录,默认为 false
AccessLogsFormatstring"" (空字符串)访问日志格式:JSON_FORMAT 或 APACHE_FORMAT,或留空使用默认格式。
FileLineNumbooltrue是否在日志中包含文件名和行号。
Outputsmap[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 配了也不能生效,需要硬编码才行,还没有去验证,不确定说法对不对,就没有备注出来,后续生产过程中碰到了再追加说明。

相关文章:

  • Vue.js Vue 测试工具:Vue Test Utils 与 Jest
  • 【Golang 面试题】每日 3 题(六十二)
  • CVE-2021-34527: PrintNightmare 域内提权
  • linux--文件属性、目录的操作
  • 计算机网络之物理层——基于《计算机网络》谢希仁第八版
  • 计算机考研之数据结构:P 问题和 NP 问题
  • Spring监听器Listener
  • LLaMA-Factory|微调大语言模型初探索(3),qlora微调deepseek记录
  • qt:输入控件操作
  • 从0-1搭建mac环境最新版
  • Freertos学习第一篇-总体概述
  • springboot三层架构详细讲解
  • 输入搜索、分组展示选项、下拉选取,全局跳转页,el-select 实现 —— 后端数据处理代码,抛砖引玉展思路
  • Java之——“String类”(内容较多,结合目录察看分类)
  • CSS Grid 布局学习笔记
  • Android 之 AIDL for HAL
  • qt-C++笔记之创建和初始化 `QGraphicsScene` 和 `QGraphicsView` 并关联视图和场景的方法
  • React进阶之前端业务Hooks库(一)
  • 基于Spring Boot的RabbitMQ延时队列技术实现
  • 服务器Docker OOM RSS高问题排查思路
  • 沙青青评《通勤梦魇》︱“人机组合”的通勤之路
  • 大外交|巴西总统卢拉第六次访华签署20项协议,“双方都视对方为机遇”
  • 足球少年郎7月试锋芒,明日之星冠军杯构建顶级青少年赛事
  • 内塔尼亚胡:以军将在未来几天“全力进入”加沙
  • 第十届影像上海博览会落幕后,留给中国摄影收藏的三个问题
  • 学习教育期间违规吃喝,李献林、叶金广等人被通报