Skip to content

WillemCode/ScriptTools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

简体中文 | 繁体中文 | English | 日本語

Nginx 代理配置自动化脚本

简介

本脚本用于快速生成客户域名的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权限的用户运行。

安装与配置

  1. 下载脚本 将脚本保存至服务器,建议存放于统一管理目录:
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
  1. 配置钉钉通知(可选)

    如需启用钉钉通知,需在同一目录下提供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/

PHP集成

生成的配置文件中,root路径与原域名一致,后端PHP可通过$_SERVER['HTTP_HOST']获取当前域名,动态加载客户定制化页面。示例逻辑:

// 根据域名加载不同客户模板
$client = $_SERVER['HTTP_HOST'];
include("/var/www/html/clients/$client/header.php");

注意事项

  1. SSL证书准备

    • 需提前将证书文件(.key和指定后缀文件)放置于脚本检测路径(通常为旧域名证书目录)。
    • 证书文件命名需为[域名].[后缀],如www.client.com.pem
  2. 备份策略

    • 每次执行自动备份至~/.domainpilot/backups/,保留最近10份。
  3. 日志查看

    • 执行日志实时输出至终端,错误信息标红显示。

技术支持


许可证说明

本项目采用 GNU General Public License (GPL) 进行开源发布。
这意味着:

  • 你可以自由复制、修改和分发本项目的源代码,但修改后的项目也必须继续以 GPL 或兼容的许可证进行发布;
  • 分发或发布时,需包含本项目的原始版权声明与 GPL 协议文本,并提供完整的源代码获取方式。

请参阅 LICENSE 文件获取详细条款。若你对 GPL 的使用及合规性有任何疑问,请查阅 GNU 官网 或咨询相关专业人士。


Star History

Star History Chart

About

🔧 脚本工具箱

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages