# ====================================================================== # EasyGoAdmin 运行时配置 # 环境变量覆盖规则(12-Factor:环境变量 > 配置文件): # 键名 = 配置路径大写、点换下划线并加 GF_ 前缀, # 例如 database.default.link → GF_DATABASE_DEFAULT_LINK; # 覆盖经 utility/config 在启动时接线(RegisterEnvOverride), # 仅覆盖本文件中已存在的键,空值视为未设置 # ====================================================================== # ---------------------------------------------------------------------------- # 服务端:监听地址、OpenAPI 文档与优雅重启 # ---------------------------------------------------------------------------- server: address: ":8000" # 监听地址与端口 openapiPath: "/api.json" # OpenAPI 文档路径(gf 原生自动生成,bind.go 补注册闭包路由) swaggerPath: "" # Swagger UI 路径(内置页依赖境外 CDN,已改为本地托管 resource/swagger/) dumpRouterMap: false # 启动时是否打印路由表 errorStack: true # 响应中是否携带错误堆栈 graceful: true # 是否开启优雅重启 # ---------------------------------------------------------------------------- # 日志:级别、输出目标与文件目录 # ---------------------------------------------------------------------------- logger: level: "all" # 日志级别 stdout: true # 是否输出到控制台 path: "log" # 日志文件目录 # ---------------------------------------------------------------------------- # 多数据库:切换数据库仅需修改 type 与 link(五方言示例) # ---------------------------------------------------------------------------- database: default: type: "mysql" # 数据库类型 link: "mysql:root:root@tcp(127.0.0.1:3306)/easygoadmin.goframe.elevue?charset=utf8mb4&parseTime=true&loc=Local" # 连接串 debug: false # 是否打印 SQL 调试日志(调试期开启,生产环境改回 false) # 其他方言示例: # type: "pgsql" link: "pgsql:user:password@tcp(127.0.0.1:5432)/easygoadmin?sslmode=disable" # type: "mssql" link: "mssql:sa:Password1@tcp(127.0.0.1:1433)/easygoadmin?encrypt=disable" # type: "oracle" link: "oracle:user:password@tcp(127.0.0.1:1521)/XE" # type: "sqlite" link: "sqlite::@file(easygoadmin.db)" # ---------------------------------------------------------------------------- # Redis:缓存连接(JWT 黑名单、验证码、字典、租户与身份缓存) # ---------------------------------------------------------------------------- redis: default: # 分组名(g.Redis() 默认组) address: "127.0.0.1:6379" # 地址 db: 0 # 库编号 pass: "123456" # 密码 idle: 10 # 空闲连接数 maxActive: 50 # 最大活跃连接数 timeout: 300 # 超时时间(秒) # ---------------------------------------------------------------------------- # JWT 双令牌:accessToken 短时效 + refreshToken 长时效轮换 # ---------------------------------------------------------------------------- jwt: secret: "easygoadmin-goframe-elevue-jwt-secret-2026" # 签名密钥 issuer: "easygoadmin" # 签发者 accessTokenExpire: 7200 # 访问令牌有效期(秒),2 小时 refreshTokenExpire: 604800 # 刷新令牌有效期(秒),7 天 # ---------------------------------------------------------------------------- # 图形验证码:字符集、图片尺寸与干扰参数 # ---------------------------------------------------------------------------- captcha: expire: 300 # 有效期(秒) bypassCode: "618618" # 万能验证码:携带该值免校验,仅开发调试使用,生产环境留空 length: 6 # 字符数,取值范围 4 到 8 chars: "ABCDEFGHJKLMNPQRSTUVWXYZ23456789" # 字符集,已排除 0O、1lI 等易混淆字符 fontPath: "resource/static/fonts/Vera.ttf" # TTF 字体路径(相对项目根),缺失时降级为 SVG 渲染 imageWidth: 160 # 图片宽度(像素),字符放不下时自动加宽防裁剪 imageHeight: 50 # 图片高度(像素) fontSize: 40 # 字体大小 noiseLines: 8 # 干扰线数量,越多越难识别,影响可读性 noiseDots: 500 # 噪点数量,越多越难识别,影响可读性 # ---------------------------------------------------------------------------- # API 限流:固定窗口计数(键含窗口起点,缓存层 Redis 优先、内存降级) # ---------------------------------------------------------------------------- rateLimit: enable: true # 是否启用限流 limit: 120 # 普通接口每窗口每 IP 每路径最大请求数,0 关闭普通限流 windowSeconds: 60 # 计数窗口(秒) authLimit: 10 # 登录/验证码/令牌兑换每窗口每 IP 最大请求数(更严格) # ---------------------------------------------------------------------------- # 操作日志:总开关与查询类记录开关 # ---------------------------------------------------------------------------- operationLog: enable: true # 是否启用操作日志 logQuery: true # 是否记录查询类操作 # ---------------------------------------------------------------------------- # 定时任务:日志保留天数(LogClean 任务消费,任务参数可覆盖) # ---------------------------------------------------------------------------- job: logRetentionDays: 90 # 操作/登录/任务日志保留天数,超期由 LogClean 任务物理删除 # ---------------------------------------------------------------------------- # 租户:超管新增租户级数据时的默认归属 # ---------------------------------------------------------------------------- tenant: defaultId: 1 # 超管新增租户级数据时的默认归属租户ID,显式指定租户时从显式值 # ---------------------------------------------------------------------------- # 应用参数:时区、演示模式与错误信息开关 # ---------------------------------------------------------------------------- app: timezone: "Asia/Shanghai" # 应用时区 demo: false # 演示模式:为 true 时写操作一律拒绝,读操作与登录类公开接口放行 errorMsg: true # 是否返回详细错误信息,生产环境建议置为 false # ---------------------------------------------------------------------------- # API:驼峰转换与受信代理 # ---------------------------------------------------------------------------- api: camelSnakeConvert: true # 是否启用驼峰与下划线自动转换,本项目全链路驼峰,恒开 # 受信代理列表,逗号分隔并支持 CIDR; # 直连来源在此列表内才信任 X-Forwarded-For 与 X-Real-IP # 172.16.0.0/12 为 Docker 网桥默认网段:容器端口映射模式下 TCP 对端恒为 # 网桥网关(如 172.19.0.1),CDN/反代回源经 NAT 后须凭此段进入 XFF 取真实 IP; # 宿主机 Nginx 反代场景再补宿主机 IP 或其网段;勿配置 0.0.0.0/0(等于允许任意伪造) proxyIps: "127.0.0.1,::1,172.16.0.0/12,101.226.0.0/15,112.65.0.0/16,140.207.0.0/16,180.101.0.0/16,182.254.0.0/16,223.166.0.0/16" # ---------------------------------------------------------------------------- # 跨域:允许来源 # ---------------------------------------------------------------------------- cors: allowOrigin: "*" # 允许的来源,为空或 * 时使用框架内置策略 # ---------------------------------------------------------------------------- # 文件上传:临时目录中转,提交保存时转正至正式目录 # ---------------------------------------------------------------------------- file: uploadDir: "E:\\EasyGoAdmin_V3\\EasyGoAdmin_GoFrame_EleVue\\upload" # 物理根目录,相对项目根 domainUrl: "http://file.goframe.elevue" # 文件访问域名,为空时使用 /upload/ 相对路径 tempDir: "temp" # 临时目录名,位于 uploadDir 下 imageExt: "gif,jpg,jpeg,png,bmp,webp,svg" # 允许的图片扩展名 fileExt: "gif,jpg,jpeg,png,bmp,webp,svg,doc,docx,xls,xlsx,ppt,pptx,pdf,zip,rar,txt,csv,mp3,mp4,sql,js,css" # 允许的文件扩展名 maxSize: 10 # 单文件大小上限(MB) tempExpireDays: 7 # 临时目录保留天数,超期自动清理,0 表示不清理 # ---------------------------------------------------------------------------- # 代码生成器:菜单挂载位置与文件覆盖策略 # ---------------------------------------------------------------------------- generator: parentMenuId: 189 # 新模块菜单挂载的父级ID overwrite: true # 是否覆盖已存在文件:true 生成即覆盖,false 或未配置时缺失补生成、存在跳过 # ---------------------------------------------------------------------------- # 归属地库:供登录日志与操作日志的归属地解析使用 # ---------------------------------------------------------------------------- ip2region: path: "manifest/data/ip2region.xdb" # 归属地库文件路径