在Windows系統中,在nginx的安裝目錄之外的其它目錄下通過 start nginx 和nginx -s quit 來啟動和退出nginx,會失敗。原因是nginx内部使用相對路徑而非絕對路徑。本文給出了在任意目錄下啟動和退出nginx的指令行,親測有效。
寫在前面
本文給出Windows系統中能在任意路徑下通過指令行啟動和退出nginx的方法。不想看過程的讀者可以直接跳轉到結論,一樣能解決問題。
正文
過程
很多Windows下的nginx教程都教我們先cd到nginx安裝目錄(即nginx.exe所在目錄),再執行 start nginx 和 nginx -s quit 來分别啟動和退出nginx。但實測發現,在非安裝目錄下,執行這兩條指令會失敗,即使你已經為nginx.exe配置了環境變量。
本文中,nginx安裝目錄如下圖所示:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLzYjN3MDM4QjMtQDN3EDN4ATNxYjM5ATMyAjMtMjMyIDN28CX5ATMyAjMvw1MyIjM0YzLcd2bsJ2Lc12bj5ycn9Gbi52YuAjMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
注意,除非特别說明,否則後文中nginx的安裝目錄一律用 D:\software\nginx 表示。
非安裝目錄下使用 start nginx 啟動nginx的結果如下圖所示:
注意,正常(即nginx能啟動)情況下,執行 start nginx 後會有一個視窗一閃而過,這是正常的。在非安裝目錄下,執行 start nginx 後也會有一個視窗一閃而過,但nginx根本沒起來(有上圖為證),隻不過是視窗閃退,我們沒辦法看清報錯資訊罷了。
同樣,非安裝目錄下使用 nginx -s -quit 退出nginx也會失敗,好在這次直接報錯了,如下圖:
事實上,nginx内部使用相對路徑而非絕對路徑,是以,在非安裝目錄下執行可執行檔案 nginx.exe 就會出現找不到安裝路徑下的檔案的情況,上圖中劃紅線部分也證明了這一點。
找到了原因,就可以對症下藥了。我們可以使用 - p 參數(使用 nginx -h 可以檢視所有參數及含義)為nginx顯式指出檔案路徑。具體地,啟動時使用 start nginx "-p D:/software/nginx" ,停止時使用 nginx -p D:/software/nginx -s quit 。
注意:
- 推薦使用Windows PowerShell而非cmd。親測,cmd下啟動、退出nginx後,再次啟動,會失敗,目前還未搞清原因(這裡懇請了解原因的讀者不吝賜教),但Windows PowerShell下不會出現該問題。
- 啟動指令中, -p D:/software/nginx 必須用英文雙引号括起來。
- Windows PowerShell下可直接使用 D:/software/nginx ,當然, D:\\software\\nginx 或 D:\software\nginx 也可以。
結論
第一步:将nginx.exe所在目錄加入環境變量的Path中,不會操作的讀者請自行學習。
第二步:在任意目錄下,按如下方式啟動或退出nginx:
啟動使用
start nginx "-p xxx"
退出使用
nginx -p xxx -s quit
- xxx 表示 nginx.exe 所在的絕對路徑。
- 啟動指令中記得加英文雙引号。
- 推薦使用 Windows PowerShell 而非 cmd 。
寫在後面
在下剛接觸nginx,文中錯誤疏漏之處在所難免,歡迎廣大讀者批評指正,您的批評是在下前進的不竭動力。