mosparo 1.5.13 配置参数详解
mosparo 1.5.13 配置四层体系(.env/env.mosparo.php/.env.local/项目级)逐项详解:MOSPARO_* 环境变量、数据库 TLS、清理保留期、健康检查白名单实测验证、安全特性默认值与调参路径。
mosparo 1.5.13 配置参数详解
本文是 mosparo 专栏的配置篇。全部参数取值取自 2026-10-28 实测的 v1.5.13 实例(Debian 12 + Apache + MariaDB,部署过程见《mosparo 1.5.13 安装部署指南》),关键参数均做了"改动 → 清缓存 → 观察行为"的生效验证,验证过程在对应小节给出实测回显。命令行运维见《mosparo 1.5.13 常用 CLI 命令详解》。
一、配置体系:四层来源与优先级
mosparo 基于 Symfony 6.4,配置分散在四个位置,从低到高生效顺序如下(php bin/console debug:dotenv 实测输出的 Scanned Files 节):
Scanned Files (in descending priority)
--------------------------------------
* ⨯ .env.local.php
* ⨯ .env.prod.local
* ⨯ .env.prod
* ⨯ .env.local
* ✓ .env
✓ 表示该文件存在并被加载,⨯ 表示不存在。结合实测,四层含义为:
| 层 | 位置 | 谁写入 | 放什么 |
|---|---|---|---|
| 1. 发行默认 | <安装目录>/.env | 发行包自带 | 全部环境变量默认值,升级不覆盖用户修改 |
| 2. 安装配置 | <安装目录>/config/env.mosparo.php | 安装向导 / 后台设置页 | 数据库连接、加密密钥、邮件、Webcron 等 |
| 3. 手动覆盖 | <安装目录>/.env.local | 管理员手动创建 | 覆盖 1、2 层的环境变量,优先级最高 |
| 4. 项目级参数 | 数据库 mspr_project 表 | 后台项目设置 | 每个项目的安全/设计/高级参数 |
注意一个反直觉点:第 2 层(config/env.mosparo.php)在文件优先级上并不高于 .env.local 的同名变量,但数据库连接参数(database_* 键)由 mosparo 专用逻辑读取并拼装 DATABASE_URL,因此改数据库连接要么走后台设置页,要么直接改 env.mosparo.php,只写 .env.local 的 DATABASE_URL 不被安装配置逻辑采纳。手动覆盖系统类变量(如本文第三节那些 MOSPARO_*)用 .env.local 是正确姿势。
改完任何环境变量必须清缓存才生效:
root@mosparo-lab:/var/www/mosparo# php bin/console cache:clear
root@mosparo-lab:/var/www/mosparo#
(实测:命令成功时无输出,直接返回提示符。)
二、安装配置文件 env.mosparo.php 逐项
安装向导完成后生成 config/env.mosparo.php,实测全文(密码脱敏):
<?php
return array (
'database_system' => 'mysql',
'database_driver' => 'pdo_mysql',
'database_host' => '127.0.0.1',
'database_port' => '3306',
'database_name' => 'mosparo',
'database_user' => 'mosparo',
'database_password' => '****',
'database_version' => '10.11.19-MariaDB-0+deb12u1',
'mosparo_name' => 'mosparo-lab',
'encryption_key' => 'c50c348c21795be18d80ce62bacd3b9ff959d98011ea737eae05175a32ef83c7',
'secret' => '10e790aa4d66a6afed9407f926851a44f2b4cdac2de15db45dfdfcf4c2c3b356',
'mosparo_installed' => true,
'mosparo_installed_version' => '1.5.13',
'mosparo_initial_version' => '1.5.13',
'mosparo_assets_version' => 'CmCHCGFBI0g',
);
逐项说明(键名均实测如上):
| 键 | 语义 | 运维要点 |
|---|---|---|
database_system / database_driver | 数据库类型与 PDO 驱动 | 可选 mysql(pdo_mysql)、postgres(pdo_pgsql)、sqlite(pdo_sqlite) |
database_host / database_port | 连接地址与端口 | 数据库与 mosparo 不同机时改此两项 |
database_name / database_user / database_password | 库名与凭据 | 密码明文存放,务必把文件权限锁到 Apache 运行用户可读 |
database_version | 安装时探测到的服务端版本 | mosparo 用它做方言适配,换库/升级数据库后需同步 |
mosparo_name | 实例显示名 | 后台页面标题、邮件模板引用 |
encryption_key | 提交数据加密密钥 | 加密存储的提交数据靠它解密;丢失后历史提交不可读。备份必须包含本文件 |
secret | Symfony 应用密钥 | 签名/CSRF 相关;泄露需连同会话作废处理 |
mosparo_installed / mosparo_installed_version / mosparo_initial_version | 安装状态与版本轨迹 | mosparo:health、升级器判断依据 |
mosparo_assets_version | 前端资源版本指纹 | 静态资源缓存刷新用,无需手改 |
后台「Administration → Settings」修改邮件、代理等设置后,同样写入本文件,不改 .env。
三、环境变量逐项(.env 层)
以下清单取自 php bin/console debug:dotenv 实测输出的 Variables 节(值列 = 发行包默认值),按功能分组解读:
3.1 数据保留与清理(核心生产参数)
| 变量 | 默认 | 语义 |
|---|---|---|
MOSPARO_SUBMISSION_RETENTION_PERIOD | 14 | 提交数据保留天数,到期由清理任务删除。官方 README 声称"14 天后删除所有数据"即由此实现 |
MOSPARO_SUBMIT_TOKEN_RETENTION_PERIOD | 24 | 提交令牌(submit token)保留小时数。令牌是前端领取的"提交资格",过期未用即清 |
MOSPARO_CLEANUP_GRACE_PERIOD_ENABLED | 0 | 清缓宽限开关。开 1 后,到期数据不立即删,给统计页面一个缓冲期 |
MOSPARO_CLEANUP_PROCESS_INTERVAL | 6 | 清理任务处理间隔(分钟) |
MOSPARO_CLEANUP_UNFINISHED_INTERVAL | 10 | 未完成提交(领了令牌没提交)的清理间隔(分钟) |
清理任务靠计划任务驱动(后台 Webcron 或系统 crontab 调 CLI),不配置计划任务这些参数不会生效,见《mosparo 1.5.13 常用 CLI 命令详解》计划任务一节。
3.2 健康检查(实测验证)
| 变量 | 默认 | 语义 |
|---|---|---|
MOSPARO_HEALTH_ALLOW_LIST | 127.0.0.1,::1 | 允许访问 /api/v1/health/check 的 IP 白名单,逗号分隔 |
MOSPARO_BYPASS_HEALTH_CHECK | 0 | 置 1 可绕过部分健康检查逻辑(如无项目时的告警),一般不动 |
生效验证实录(2026-10-28 实测):默认白名单下,从另一台内网机器(10.89.67.1)访问健康端点,得到的不是 403 而是 404——mosparo 对白名单外来源直接隐藏端点存在性:
monitor@10.89.67.1:~$ curl -s -m 5 -w '\nHTTP %{http_code}\n' http://10.89.67.2/api/v1/health/check
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
...
<title>Not found - mosparo-lab</title>
...
HTTP 404
在服务器上创建 .env.local 把监控机加入白名单并清缓存:
root@mosparo-lab:~# cd /var/www/mosparo
root@mosparo-lab:/var/www/mosparo# printf 'MOSPARO_HEALTH_ALLOW_LIST=127.0.0.1,::1,10.89.67.1\n' > .env.local
root@mosparo-lab:/var/www/mosparo# php bin/console cache:clear
再从同一台监控机访问,实测立刻放行:
monitor@10.89.67.1:~$ curl -s -m 8 -w '\nHTTP %{http_code}\n' http://10.89.67.2/api/v1/health/check
{"service":"mosparo","healthy":true,"databaseStatus":"connected","error":null,"statusCode":200}
HTTP 200
结论:MOSPARO_HEALTH_ALLOW_LIST 走 .env.local + cache:clear 链路即刻生效,无需重启服务;监控接入时别忘把监控机 IP 加进来,否则会被 404 迷惑。
3.3 更新检查
| 变量 | 默认 | 语义 |
|---|---|---|
MOSPARO_UPDATES_ENABLED | 1 | 允许在后台执行在线更新(mosparo:self-update 的 UI 侧开关) |
MOSPARO_AUTOMATIC_UPDATE_CHECK_ENABLED | 1 | 后台自动检查新版本(只检查提示,不自动升级) |
3.4 规则包
| 变量 | 默认 | 语义 |
|---|---|---|
MOSPARO_RULE_PACKAGE_MINIMUM_REFRESH_INTERVAL | 3600 | 规则包最小刷新间隔(秒),后台配更短也按此兜底 |
MOSPARO_RULE_PACKAGE_ALLOW_REDIRECTS | 0 | 拉取规则包是否跟随 HTTP 重定向 |
MOSPARO_RULE_PACKAGE_ALLOW_PRIVATE_NETWORKS | 0 | 是否允许规则包 URL 指向私网地址(自建规则源需置 1,否则会被 SSRF 防护拦截) |
MOSPARO_RULE_ITEMS_CACHE_TTL | 3600 | 规则条目缓存 TTL(秒),影响规则匹配的查库频率 |
MOSPARO_USE_SHARED_CACHE_FOR_RULE_ITEMS | 0 | 多实例部署时规则条目缓存改用共享缓存(配合 Redis/Memcached) |
3.5 缓存与锁
| 变量 | 默认 | 语义 |
|---|---|---|
MOSPARO_CACHE_ADAPTER | 空 | 缓存适配器;留空用文件系统缓存,可切 Redis/Memcached |
REDIS_URL | redis://localhost | Redis 连接地址(切 Redis 缓存时用) |
MEMCACHED_URL | memcached://localhost | Memcached 连接地址 |
FILESYSTEM_CACHE_PATH | 空 | 文件缓存目录,空则用默认 var/cache |
LOCK_DSN | flock | 锁实现;单机 flock 够用,多实例换 semaphore 或基于 Redis 的 DSN |
MOSPARO_PREPARE_CSS_FILES_IN_SHARED_CACHE | 0 | 多实例下把 CSS 预处理产物放共享缓存 |
3.6 数据库 TLS(MySQL 专用)
| 变量 | 默认 | 语义 |
|---|---|---|
DATABASE_MYSQL_SSL | 0 | 数据库连接启用 TLS |
DATABASE_MYSQL_SSL_CA | 空 | CA 证书路径 |
DATABASE_MYSQL_SSL_CERT / DATABASE_MYSQL_SSL_KEY | 空 | 客户端证书/私钥(双向 TLS 才需要) |
DATABASE_MYSQL_SSL_VERIFY_SERVER_CERT | 0 | 是否校验服务端证书 |
3.7 框架级
| 变量 | 默认 | 语义 |
|---|---|---|
APP_ENV | prod | 运行环境,发行包已预设 prod,不要改成 dev 上生产 |
APP_SECRET | secret | 发行包占位值;安装向导已在 env.mosparo.php 写入随机 secret 覆盖它 |
TRUSTED_PROXIES | %default_trusted_proxies% | 反向代理场景声明可信代理 IP 段,否则 mosparo 记录到的客户端 IP 全是代理 IP,频率/锁定类防护会误伤 |
MOSPARO_ENV_SUFFIX | 空 | 同机多实例时给环境配置文件加后缀(如 env.mosparo.db1.php) |
MOSPARO_CONFIG_FILE_PATH | 空 | 自定义 env.mosparo.php 的存放路径(如放到安装目录外统一管理) |
四、Webcron 相关配置键
后台「Administration → Cron jobs」配置的值同样落在 config/env.mosparo.php,相关键(自源码与实测确认):
| 键 | 语义 |
|---|---|
webCronJobActive | 是否启用 Web Cron(默认未写入,即禁用) |
webCronJobSecretKey | Web Cron 调用密钥 |
webCronJobInterval | 执行间隔(分钟,默认 10) |
web_cron_job_access_ip_allow_list | 允许调用 Web Cron 端点的 IP 白名单 |
实测:未启用时访问 Web Cron 端点被拒:
root@mosparo-lab:~# curl -s http://localhost/cron-jobs/execute
400 Bad Request
运维建议:Web Cron 依赖"有人来访问"才触发,裸机生产更稳的做法是系统 crontab 直接调 CLI(每 5 分钟跑 mosparo:cleanup-database),命令与实测回显见《mosparo 1.5.13 常用 CLI 命令详解》。
五、项目级参数(后台 / 数据库层)
mosparo 以项目(Project)为防护单元,每个项目独立一套参数。以下默认值取自实测执行 php bin/console mosparo:export 1 导出的 JSON(项目刚按向导默认创建,未做任何人工调整):
5.1 通用与高级
| 参数 | 默认 | 语义 |
|---|---|---|
spamScore | 5 | 垃圾分阈值:各规则命中累计分数 ≥ 该值判为垃圾 |
hosts | [] | 允许挂载该项目验证框的业务站点来源;生产必须填,否则任意站点可消耗你的资源 |
statisticStorageLimit | FOREVER | 统计数据保留时长 |
silentModeEnabled | false | 静默模式:垃圾提交不返回原因,增加机器方试探成本 |
spamDataReturned | false | 验证响应是否附带垃圾详情 |
metadataAllowed / metadataReturned | false | 是否允许/返回浏览器元数据 |
apiDebugMode | false | API 调试模式(响应带详细信息),生产关闭 |
verificationSimulationMode | false | 验证模拟模式:只验证不落库,测试环境用 |
5.2 安全特性默认值
| 参数 | 默认 | 语义 |
|---|---|---|
minimumTimeActive / minimumTimeSeconds | true / 10 | 表单展示到提交不足 10 秒判机器 |
honeypotFieldActive | true | 蜜罐字段开启 |
delayActive | true | 延迟机制:delayNumberOfRequests=30 次 / delayDetectionTimeFrame=30 秒 触发,初始 delayTime=60 秒,delayMultiplicator=1.5 递增 |
lockoutActive | true | 锁定机制:60 秒内 60 次触发,锁 300 秒,倍率 1.2 |
proofOfWorkActive / proofOfWorkComplexity | true / 5 | 前端工作量证明,复杂度 5(动态上限 7,基于 IP,300 秒窗口 30 次后升档) |
equalSubmissionsActive | true | 300 秒窗口内 3 次相同提交判垃圾(基于 IP) |
ipAllowList | 空 | 项目级 IP 白名单,填入的 IP 跳过检测 |
调参经验:这些默认值对普通联系表单够用;minimumTimeSeconds 若误伤快速填写者可降到 5;延迟/锁定的触发阈值按业务峰值流量调整,别把正常秒杀活动用户锁掉。
六、配置变更的操作路径速查
| 要改什么 | 在哪改 | 生效动作 |
|---|---|---|
| 数据库连接 | 后台设置页或直接编辑 config/env.mosparo.php | 清缓存(cache:clear) |
| 系统环境变量 | 新建/编辑 .env.local | 清缓存 |
| 项目安全/设计/高级参数 | 后台项目设置页 | 立即生效(写库) |
| 规则包源 | 后台项目 → Rule packages | 刷新后生效 |
| Webcron | 后台 Administration → Cron jobs | 写入 env.mosparo.php |
七、参考
- 组件定位与竞品对比:《mosparo 1.5.13 介绍与选型指南》
- 部署过程与目录结构:《mosparo 1.5.13 安装部署指南》
- 命令行与计划任务:《mosparo 1.5.13 常用 CLI 命令详解》
- 官方文档:documentation.mosparo.io(Installation / Settings 章节,查询日期 2026-10-28)