本脚本用于快速生成客户域名的Nginx代理配置文件,适用于企业级代理场景。通过自动化复制现有域名的配置文件模板,修改SSL证书、监听域名等关键参数,显著提升配置效率。后端服务基于PHP实现,支持根据域名动态加载客户定制化页面(如LOGO、文案等)。
- 一键生成配置:基于现有域名配置文件快速生成新配置。
- SSL证书自动化:支持自动检测并配置
.pem、.cer、.crt格式的SSL证书。 - 安全备份:自动备份历史配置文件,保留最近10份备份,防止误操作。
- 兼容性:支持CentOS 7+、Ubuntu 16.04+等主流Linux发行版。
- 钉钉通知集成:配置成功后自动发送通知至钉钉群(需预先配置
dingding.sh)。
- 操作系统: Linux(CentOS 7+/Ubuntu 16.04+/Alpine)
- 依赖软件: Nginx 1.18+、OpenSSL、Bash 4.0+
- 权限要求: 需以
root或具有sudo权限的用户运行。
- 下载脚本 将脚本保存至服务器,建议存放于统一管理目录:
mkdir -p /opt/scripts && cd /opt/scripts
git clone https://github.com/WillemCode/ScriptTools.git
cd ScriptTools
chmod +x nginx_config_copy.sh dingding.sh
-
配置钉钉通知(可选)
如需启用钉钉通知,需在同一目录下提供
dingding.sh,并确保其可执行权限。
| 模式 | 命令格式 | 描述 |
|---|---|---|
| 模式1 | ./nginx_config_copy.sh [pem/cer/crt] |
仅指定SSL证书类型,需手动输入新旧域名。 |
| 模式2 | ./nginx_config_copy.sh [pem/cer/crt] [新域名] [旧域名] |
标准配置模式,若文件存在则提示覆盖。 |
| 模式3 | ./nginx_config_copy.sh [pem/cer/crt] [新域名] [旧域名] force |
强制覆盖模式,跳过确认直接替换。 |
| 参数 | 必选 | 说明 |
|---|---|---|
pem/cer/crt |
是 | SSL证书文件后缀类型。 |
新域名 |
是 | 需代理的新域名(如www.new.com)。 |
旧域名 |
是 | 参考的旧域名配置文件(如www.old.com)。 |
force |
否 | 强制覆盖同名配置文件。 |
示例1:交互式配置(模式1)
./nginx_config_copy.sh pem
# 根据提示输入新旧域名示例2:快速生成配置(模式2)
./nginx_config_copy.sh crt www.client.com www.template.com示例3:强制覆盖配置(模式3)
./nginx_config_copy.sh cer www.client2024.com www.template.com force- Nginx配置: 自动检测,默认存放于
/etc/nginx/conf.d/(默认,根据实际环境可能不同)。 - SSL证书: 自动检测,旧证书路径,默认位于
/etc/nginx/ssl/。
生成的配置文件中,root路径与原域名一致,后端PHP可通过$_SERVER['HTTP_HOST']获取当前域名,动态加载客户定制化页面。示例逻辑:
// 根据域名加载不同客户模板
$client = $_SERVER['HTTP_HOST'];
include("/var/www/html/clients/$client/header.php");-
SSL证书准备
- 需提前将证书文件(
.key和指定后缀文件)放置于脚本检测路径(通常为旧域名证书目录)。 - 证书文件命名需为
[域名].[后缀],如www.client.com.pem。
- 需提前将证书文件(
-
备份策略
- 每次执行自动备份至
~/.domainpilot/backups/,保留最近10份。
- 每次执行自动备份至
-
日志查看
- 执行日志实时输出至终端,错误信息标红显示。
- 问题反馈:请提交Issue至GitHub仓库。
本项目采用 GNU General Public License (GPL) 进行开源发布。
这意味着:
- 你可以自由复制、修改和分发本项目的源代码,但修改后的项目也必须继续以 GPL 或兼容的许可证进行发布;
- 分发或发布时,需包含本项目的原始版权声明与 GPL 协议文本,并提供完整的源代码获取方式。
请参阅 LICENSE 文件获取详细条款。若你对 GPL 的使用及合规性有任何疑问,请查阅 GNU 官网 或咨询相关专业人士。