核心用法
本 Skill 通过单条命令自动化完成 Nginx/OpenResty 反向代理配置的全流程:
1. 参数解析:从命令行参数或环境变量读取服务名、域名、端口、配置路径和容器名
2. 配置生成:在指定目录创建 .conf 配置文件
3. 安全测试:在 Docker 容器内执行 nginx -t 验证语法
4. 决策执行:测试通过则 nginx -s reload 热重载;失败则自动删除配置文件回滚
使用方式
推荐做法(预置环境变量):
export NGINX_CONFIG_PATH="/opt/1panel/apps/openresty/openresty/conf/conf.d" export NGINX_CONTAINER_NAME="1Panel-openresty-1Mjq" bash skills/nginx-config-creator/scripts/create-and-reload.sh \ --service-name "n8n" \ --domain "994431.xyz" \ --port "5678"
完整参数模式(无环境变量):
bash skills/nginx-config-creator/scripts/create-and-reload.sh \ --service-name "n8n" --domain "994431.xyz" --port "5678" \ --config-path "/path/to/conf.d" \ --container-name "nginx-container"
显著优点
- 熔断安全机制:核心亮点是"测试-决策"模式,配置错误时自动回滚,绝对避免线上服务中断
- 环境感知设计:支持环境变量预配置,大幅简化日常命令长度
- 容器原生:专为 Docker 化 Nginx/OpenResty 部署设计,契合现代 DevOps 实践
- 零依赖入侵:纯 Bash 脚本实现,不引入额外工具链
潜在缺点与局限性
- 单域名限制:仅支持单域名配置,不支持多域名、通配符或复杂 location 规则
- 模板固定:内置配置模板不可自定义,无法满足高级负载均衡、缓存策略等需求
- Docker 强绑定:必须指定容器名,裸机部署 Nginx 需额外适配
- 权限隐含假设:脚本需具备写入配置目录及执行 Docker 命令的权限,未显式校验
- 无备份机制:回滚即删除,原配置(如有)不做版本保留
适合人群
- 使用 1Panel 等面板管理 OpenResty/Nginx 的运维人员
- 需要快速为内部服务(如 n8n、Uptime Kuma 等)暴露公网访问的开发者
- 追求"一键安全上线"、不愿手动编辑配置的小团队
常规风险
| 风险点 | 说明 |
|--------|------|
| 配置覆盖 | 同名 service-name 会直接覆盖现有 `.conf` 文件,无提示 |
| 容器误配 | 错误的 `--container-name` 会导致 `docker exec` 失败 |
| 路径穿越 | `--config-path` 未做严格校验,理论上可指向任意可写目录 |
| 权限提升 | 脚本以当前用户权限执行 Docker 命令,若用户属 docker 组则具备 root 等效能力 |
建议在 staging 环境充分验证后再用于生产。