
minicron 生产环境部署指南Nginx反向代理与HTTPS配置全解析【免费下载链接】minicron️ Monitor your cron jobs项目地址: https://gitcode.com/gh_mirrors/mi/minicronminicron 是一款轻量开源的cron 任务监控工具它通过安装在各台服务器上的客户端收集定时任务数据汇总到 Web 管理端Hub让你以可视化界面查看每次执行状态、历史输出并在任务错过或失败时通过邮件、Slack、PagerDuty 等渠道收到告警。本文手把手带你在生产环境中完成 minicron 部署从启动服务、配置 Nginx 反向代理到开启 HTTPS 的完整流程。一、先搞懂 minicron 的架构minicron 采用「客户端 Hub」两层架构组件作用所在位置Client执行命令并回传执行结果minicron run mysqldump db backup.sql每台运行定时任务的服务器Server (Hub)Web UI管理任务、查看历史、配置告警单独一台服务器默认端口9292Hub 内部由 Thin 服务器承载 Web 应用相关逻辑见 server.rb默认行为与全部配置项参考官方说明 README.md。 关键点生产环境中 Hub不应直接对公网暴露 9292 端口而应只监听本机由 Nginx 统一做反向代理与 TLS 终结。二、一键启动 minicron Hub2.1 获取代码并构建git clone https://gitcode.com/gh_mirrors/mi/minicron cd minicron/server make setup make build # 安装 bundler 与 gem 依赖构建目标定义在 Makefile 中。如果你更喜欢容器化部署仓库自带 docker-compose.ymlHub MySQL 5.7.19 数据库直接docker-compose up -d即可。2.2 修改配置文件 server.toml全局配置文件默认从/etc/minicron/server.toml读取仓库中提供了完整模板 server.toml。生产环境建议修改[server]段保持host 127.0.0.1让 Hub 只监听本机杜绝端口直接暴露[server.session]段把secret change_me换成一串随机长密钥并把domain改为你最终的访问域名——这是 HTTPS 后 Cookie 会话生效的关键[server.database]段将type sqlite切换为mysql或postgresql避免生产数据依赖单文件数据库。2.3 以守护进程方式运行minicron server start # 后台启动PID 写入 /tmp/minicron.pid minicron server status # 查看状态 minicron server restart # 修改配置后重启排查问题时可加--debug前台运行直接观察日志输出。三、Nginx 反向代理配置详解仓库内置了一份可直接参考的示例配置 nginx.conf核心结构如下server { listen 80; server_name minicron.example.com; # 改成你的域名 location / { # 把用户真实 IP 透传给 minicron proxy_set_header X-Real-IP $remote_addr; # minicron 默认监听 9292如改过 server.toml 请保持一致 proxy_pass http://127.0.0.1:9292; } }逐条解释几个容易踩坑的设置proxy_pass http://127.0.0.1:9292;—— 端口必须与server.toml中的port一致不一致是最常见的 502 原因X-Real-IP请求头—— 让 Hub 记录到客户端真实 IP而不是 Nginx 所在机器GZIP 压缩—— 示例中开启了gzip_types text/css text/javascript application/json;对 Hub 这类以页面和 JSON 为主的应用非常友好。️ 如果你习惯 Apache仓库同样提供了 apache.conf 示例基于mod_proxy转发到 9292并内置了 htpasswd 基础认证使用 CDN/Varnish 的朋友可以看 default.vcl。四、三步开启 HTTPS在上面的server块基础上做三处改造server { listen 80; server_name minicron.example.com; return 301 https://$host$request_uri; # ① HTTP 强制跳转 HTTPS } server { listen 443 ssl; server_name minicron.example.com; ssl_certificate /etc/nginx/ssl/fullchain.pem; # ② 证书 ssl_certificate_key /etc/nginx/ssl/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # ③ 标记上游协议 proxy_pass http://127.0.0.1:9292; } }修改完成后执行nginx -t nginx -s reload生效。同时别忘记回到 server.toml 把[server.session]的domain改为你的正式域名——否则浏览器会因 Cookie 域不匹配而频繁要求重新登录。五、生产环境安全加固清单✅改密钥session.secret必须替换这是会话签名核心✅收端口Hub 只绑127.0.0.1防火墙中关闭 9292 的公网访问✅加认证在 Nginx 用auth_basic htpasswd或参考 Apache 示例在代理层加基础认证给管理界面再加一道门✅开告警在server.toml的[alerts]段启用 email / slack / pagerduty 等渠道enabled true任务失败第一时间收到通知✅用关系型数据库SQLite 适合体验生产建议 MySQL/PostgreSQLdocker-compose 已给出 MySQL 参考编排。六、常见问题速查现象排查方向Nginx 返回 502Hub 是否已启动server.toml的 port 与proxy_pass是否一致登录后立刻跳回登录页session.domain未改为正式域名或secret未更新日志里用户 IP 全是 127.0.0.1Nginx 未配置X-Real-IP/X-Forwarded-For头客户端任务数据不上报确认各机器上 client 指向的 Hub 地址是「域名 443」而非内网裸端口按照本文完成部署后你就拥有了一个只对内网监听、由 Nginx 统一做 TLS 终结与反向代理、并带告警能力的 minicron 监控平台——所有 cron 任务的健康状况从此一目了然 ️。【免费下载链接】minicron️ Monitor your cron jobs项目地址: https://gitcode.com/gh_mirrors/mi/minicron创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考