乐趣区

关于nginx:Windows-下配置-Nginx-全局使用

前言

在 Windows 下载安装了 Nginx,配置了环境变量全局应用 Nginx。然而 Nginx 在应用时 conf-path 是依据相对路径来找的(能够依据 nginx -V 命令看进去)。这样的话,你进入 cmd 后,要想 启动 Nginx(或者其余管制 Nginx 的命令选项),就必须切换到 Nginx 所在目录,或者在启动时指定 conf-path 的绝对路径,亦或是从新编译 Nginx 来指定 conf-path(Linux 下挺不便,Win 也能够),不然 cmd 会报错 而无奈启动 Nginx。这样应用起来并不难受,毕竟你要打一大串门路字符:(。因为不想重编译,于是想了另一种形式——应用 bat 文件

留神点:

  • 你须要先配置环境变量来全局应用 nginx 这个命令
  • nginx 的命令选项中,除了须要用到配置文件的 start stop reload 等管制命令在非装置门路下应用时会报错外(前言讲到了),其余都可间接应用。比方 nginx -v 查看版本

解决方案

创立一个 bat 文件(我的是 nginxd.bat),应用 bat 来运行 nginx 命令。创立了之后,就能够应用如下命令:

`nginxd [-h,help] [-v,version] [start] [stop] [stop -a] [reload] [reopen] [find]`

*   1

具体应用 nginxd -h 查看,当然 nginxd 命令依据 bat 文件名来定的。文件地位随便,然而要能全局应用(即指定环境变量)。代码如下:

`@echo off
if "%1"=="help" (goto help) else (if "%1"=="-h" goto help)
if "%1"=="version" (goto version) else (if "%1"=="-v" goto version)
if "%1"=="start" goto start
if "%1"=="stop" goto stop
if "%1"=="reload" goto reloadmd
if "%1"=="reopen" goto reopen
if "%1"=="find" goto find
goto error

:help
nginx -v
echo Usage: nginxd [-h,help] [-v,version] [start] [stop] [stop -a] [reload] [reopen] [find]
echo=
echo Options:
echo   help,-h         : this help
echo   version,-v      : show current nginx version
echo   start           : start nginx master process
echo   stop            : stop the newest nginx master process
echo   stop -a         : stop all nginx master processes
echo   reload          : reload configuration
echo   reopen          : reopen nginx
echo   find            : show the nginx master process list
echo=
exit /B

:version
nginx -v
exit /B

:start
start nginx -p D:Softwarenginx
exit /B

:stop
if "%2"=="-a" (taskkill /F /IM nginx.exe) else (if "%2"=="" (nginx -s stop -p D:Softwarenginx) else goto error)
exit /B

:reload
nginx -s reload -p D:Softwarenginx
exit /B

:find
tasklist /fi "imagename eq nginx.exe"
exit /B

:error
echo nginxd: invalid option: "%1 %2"
echo=   
exit /B`

简略解释

这是给小白看的,当然还有更好的实现,我也是刚接触,不足之处还请谅解。另外,以下是我本人的了解,可能有出入,请见谅

  1. @echo off:此命令分 @ 和 echo off 看。@让跟在其前面的命令的执行过程不打印进去,echo off 则让所有命令的执行过程不打印进去(本人测试,看后果就明确)。
  2. goto 与 :: 两个命令配套应用,: 相当于标签,goto 则指定跳到那个标签前面执行。
  3. echo:向命令窗口打印一行指定的字符创,echo= 打印空的字符串,后果相当于换行。
  4. exit: 该命令是退出程序,并且会敞开命令窗口(这不是我想要的)。指定 /B 则退出程序后不会敞开命窗口。/B 是说退回前一个命令所在窗口。
退出移动版