nginx智能管理助手,Windows10的bat脚本
文章目录1、Windows运行nginx痛点2、nginx智能管理助手3、安全启动4、安全停止5、安全重启1、Windows运行nginx痛点重复点击nginx会导致重复运行重复运行了之后不方便关闭不方便看nginx是否正在运行不方便重启nginx服务以下的所有脚本都需要使用ANSI编码因为作者之前使用UTF8编码总会有无法解决的小bug索性使用ANSI编码就全部都解决了2、nginx智能管理助手把代码文件直接放在和nginx的同一文件夹下即可nginx_manager.bat界面代码echo off title Nginx 智能管理助手 ::配置区域:: 【智能逻辑说明】 ::1. 如果你修改了下面的路径为真实存在的路径则优先使用该路径。 ::2. 如果保持默认值AUTO或者填写的路径不存在则自动使用脚本当前所在的文件夹。 :::: 默认设置为 AUTO表示自动检测setUSER_CONFIG_PATHAUTO:: --- 开始自动判断逻辑 ---setFINAL_NGINX_PATH::1. 检查用户是否配置了非 AUTO 的路径ifnot%USER_CONFIG_PATH%AUTO(ifexist%USER_CONFIG_PATH%\nginx.exe(setFINAL_NGINX_PATH%USER_CONFIG_PATH%echo[模式]使用用户指定路径: %FINAL_NGINX_PATH% goto PATH_SET_OK)else(echo[警告]用户配置的路径%USER_CONFIG_PATH%不存在或找不到 nginx.exeecho[提示]将自动切换到脚本所在目录模式...))::2. 获取脚本当前所在目录setFINAL_NGINX_PATH%~dp0:: 去除末尾可能的反斜杠(可选为了美观但不影响功能)if%FINAL_NGINX_PATH:~-1%\set FINAL_NGINX_PATH%FINAL_NGINX_PATH:~0,-1% :: 3. 验证当前目录下是否有 nginx.exe if not exist %FINAL_NGINX_PATH%\nginx.exe ( echo [严重错误] 在当前目录 %FINAL_NGINX_PATH% 下也未找到 nginx.exe echo 请确保将此脚本放在 nginx 安装目录下或在脚本顶部正确配置路径。 pause exit /b ) echo [模式] 自动检测到当前目录: %FINAL_NGINX_PATH% :PATH_SET_OK echo ------------------------------------------ pause goto MENU :MENU cls echo echo Nginx 智能管理菜单 echo echo 工作路径: %FINAL_NGINX_PATH% echo ------------------------------------------ echo [1] 查询 Nginx 是否运行 echo [2] 启动 Nginx echo [3] 停止 Nginx echo [4] 重启 Nginx (平滑重载) echo [5] 强制停止并重启 echo [0] 退出 echo set /p choice请输入选项 (0-5): if %choice%1 goto CHECK_STATUS if %choice%2 goto START_NGINX if %choice%3 goto STOP_NGINX if %choice%4 goto RELOAD_NGINX if %choice%5 goto RESTART_NGINX if %choice%0 goto EXIT echo 无效输入请按任意键重试... pause nul goto MENU :CHECK_STATUS echo. echo [正在查询状态...] tasklist /FI IMAGENAME eq nginx.exe | find nginx.exe nul if %errorlevel% equ 0 ( echo [成功] Nginx 正在运行中。 tasklist /FI IMAGENAME eq nginx.exe ) else ( echo [提示] Nginx 未运行。 ) echo. pause goto MENU :START_NGINX echo. echo [正在启动 Nginx...] :: 使用 start 避免阻塞且确保在正确目录运行 :: 先判定 Nginx 是否启动避免重复启动 tasklist /FI IMAGENAME eq nginx.exe | find nginx.exe nul if %errorlevel% equ 0 ( echo [成功] Nginx 已启动。 echo. pause goto MENU ) else ( start %FINAL_NGINX_PATH%\nginx.exe)timeout/t2/nobreaknul tasklist /FIIMAGENAME eq nginx.exe|findnginx.exenulif%errorlevel% equ0(echo[成功]Nginx 已启动。)else(echo[失败]启动失败请检查端口占用或日志(%FINAL_NGINX_PATH%\logs\error.log)。)echo. pause goto MENU :STOP_NGINX echo.echo[正在停止 Nginx...]tasklist /FIIMAGENAME eq nginx.exe|findnginx.exenulif%errorlevel% neq0(echo[提示]Nginx 本来就没有运行。 pause goto MENU):: 尝试优雅停止%FINAL_NGINX_PATH%\nginx.exe-sstopif%errorlevel% equ0(echo[成功]已发送停止指令。)else(echo[提示]优雅停止失败尝试强制杀死进程... taskkill /F /IM nginx.exe)timeout/t2/nobreaknul goto MENU :RELOAD_NGINX echo.echo[正在重载配置(平滑重启)...]tasklist /FIIMAGENAME eq nginx.exe|findnginx.exenulif%errorlevel% neq0(echo[错误]Nginx 未运行无法重载。请先选择[2]启动。 pause goto MENU)%FINAL_NGINX_PATH%\nginx.exe-sreloadif%errorlevel% equ0(echo[成功]配置已重载。)else(echo[失败]重载失败请检查 nginx.conf 语法。)echo. pause goto MENU :RESTART_NGINX echo.echo[正在强制重启...]call :STOP_NGINXtimeout/t2/nobreaknul call :START_NGINX goto MENU :EXITecho再见exit/b3、安全启动把代码文件直接放在和nginx的同一文件夹下即可nginx_start.bat代码echo off ::2. 获取脚本当前所在目录setFINAL_NGINX_PATH%~dp0:: 去除末尾可能的反斜杠(可选为了美观但不影响功能)if%FINAL_NGINX_PATH:~-1%\set FINAL_NGINX_PATH%FINAL_NGINX_PATH:~0,-1% :: 3. 验证当前目录下是否有 nginx.exe if not exist %FINAL_NGINX_PATH%\nginx.exe ( echo [严重错误] 在当前目录 %FINAL_NGINX_PATH% 下也未找到 nginx.exe echo 请确保将此脚本放在 nginx 安装目录下或在脚本顶部正确配置路径。 pause exit /b ) echo [模式] 自动检测到当前目录: %FINAL_NGINX_PATH% echo. echo [正在启动 Nginx...] :: 使用 start 避免阻塞且确保在正确目录运行 :: 先判定 Nginx 是否启动避免重复启动 tasklist /FI IMAGENAME eq nginx.exe | find nginx.exe nul if %errorlevel% equ 0 ( echo [成功] Nginx 已启动。 echo. pause exit /b ) start %FINAL_NGINX_PATH%\nginx.exetimeout/t2/nobreaknul tasklist /FIIMAGENAME eq nginx.exe|findnginx.exenulif%errorlevel% equ0(echo[成功]Nginx 已启动。)else(echo[失败]启动失败请检查端口占用或日志(%FINAL_NGINX_PATH%\logs\error.log)。)echo. pause4、安全停止把代码文件直接放在和nginx的同一文件夹下即可nginx_stop.bat代码echo off ::2. 获取脚本当前所在目录setFINAL_NGINX_PATH%~dp0:: 去除末尾可能的反斜杠(可选为了美观但不影响功能)if%FINAL_NGINX_PATH:~-1%\set FINAL_NGINX_PATH%FINAL_NGINX_PATH:~0,-1% :: 3. 验证当前目录下是否有 nginx.exe if not exist %FINAL_NGINX_PATH%\nginx.exe ( echo [严重错误] 在当前目录 %FINAL_NGINX_PATH% 下也未找到 nginx.exe echo 请确保将此脚本放在 nginx 安装目录下或在脚本顶部正确配置路径。 pause exit /b ) echo [模式] 自动检测到当前目录: %FINAL_NGINX_PATH% echo. echo [正在停止 Nginx...] tasklist /FI IMAGENAME eq nginx.exe | find nginx.exe nul if %errorlevel% neq 0 ( echo [提示] Nginx 本来就没有运行。 echo. pause exit /b ) :: 尝试优雅停止 %FINAL_NGINX_PATH%\nginx.exe-sstopif%errorlevel% equ0(echo[成功]已发送停止指令。)else(echo[提示]优雅停止失败尝试强制杀死进程... taskkill /F /IM nginx.exe)echo. pause5、安全重启把代码文件直接放在和nginx的同一文件夹下即可nginx_restart.bat代码echo off ::1. 开启延迟扩展 setlocal EnableDelayedExpansion ::2. 获取脚本当前所在目录setFINAL_NGINX_PATH%~dp0:: 去除末尾可能的反斜杠(可选为了美观但不影响功能)if%FINAL_NGINX_PATH:~-1%\set FINAL_NGINX_PATH%FINAL_NGINX_PATH:~0,-1% :: 3. 验证当前目录下是否有 nginx.exe if not exist %FINAL_NGINX_PATH%\nginx.exe ( echo [严重错误] 在当前目录 %FINAL_NGINX_PATH% 下也未找到 nginx.exe echo 请确保将此脚本放在 nginx 安装目录下或在脚本顶部正确配置路径。 pause exit /b ) echo [模式] 自动检测到当前目录: %FINAL_NGINX_PATH% echo. echo [正在重载配置 (平滑重启)...] :: 使用 start 避免阻塞且确保在正确目录运行 :: 先判定 Nginx 是否启动避免重复启动 tasklist /FI IMAGENAME eq nginx.exe | find nginx.exe nul if %errorlevel% equ 0 ( %FINAL_NGINX_PATH%\nginx.exe -s reload if !errorlevel! equ 0 ( echo [成功] 配置已重载。 ) else ( echo [失败] 重载失败请检查 nginx.conf 语法。 ) ) else ( echo [提示] Nginx 未启动正在准备启动。 start %FINAL_NGINX_PATH%\nginx.exetimeout/t2/nobreaknul tasklist /FIIMAGENAME eq nginx.exe|findnginx.exenulif!errorlevel!equ0(echo[成功]Nginx 已启动。)else(echo[失败]启动失败请检查端口占用或日志(%FINAL_NGINX_PATH%\logs\error.log)。))echo. pause