Windows版Nginx常用命令使用及說明
下面完全針對 Windows 版 Nginx(官方 zip 包,解壓即用)講解,假設你把它解壓到
C:\nginx(路徑隨意,下文用 %NGINX_HOME% 指代)。
一、啟動 Nginx(3 種常見辦法)
雙擊圖標(最簡單,但看不到日志)
進入 %NGINX_HOME%,雙擊 nginx.exe,黑框一閃即退,
實際上已后臺運行。
瀏覽器訪問 http://127.0.0.1 出現(xiàn) “Welcome to nginx!” 即成功。
命令行啟動(推薦,能看到報錯)
打開管理員CMD 或 PowerShell
cd C:\nginx start nginx # 不帶參數(shù),后臺守護進程
或
nginx # 會占住當前窗口,Ctrl+C 即停(調(diào)試時方便)
注冊成 Windows 服務(開機自啟,生產(chǎn)常用)
用 “WinSW” 或 “NSSM” 把 nginx.exe 包一層即可,
例如 NSSM 一條命令:
nssm install nginx “C:\nginx\nginx.exe”
二、關閉 Nginx(對應 3 種啟動方式)
任務管理器圖形關
進程名 nginx.exe,通常有兩條:一條 master,一條或多條 worker,
全選 → 結束任務。
命令行優(yōu)雅關 / 快速關
優(yōu)雅(等待連接處理完)
nginx -s quit # 必須在 原目錄 下執(zhí)行,否則找不到 pid
立即
nginx -s stop # 發(fā) Terminate 信號
如果以上提示 “找不到 logs/nginx.pid”,就手動殺:
taskkill /f /im nginx.exe
服務方式
???
net stop nginx # 假設你剛才注冊的服務名就是 nginx sc delete nginx # 徹底卸載服務
三、Windows 下最常用的 Nginx 命令
檢查配置文件寫得對不對(改完 conf 必做)
nginx -t
重載配置(熱更,不斷連接)
nginx -s reload
重新打開日志文件(日志切割后用)
nginx -s reopen
指定配置文件啟動(調(diào)試多實例時)
nginx -c C:\nginx\conf\nginx.conf
查看版本 / 編譯參數(shù)
nginx -v nginx -V
幫助
nginx -h
四、路徑 / 權限易錯點
必須在 含有 nginx.exe 的目錄 執(zhí)行
否則 nginx -s reload 會報
“could not open error log file: CreateFile() … failed”
80/443 端口占用
通常是被 IIS、SQL Server Reporting、Skype 搶掉。
解決:
netstat -ano | findstr :80 taskkill /PID <占用PID> /F
或把 listen 改成 8080 等高端口。
防火墻彈窗
首次啟動 Windows Defender 會提示 “是否允許 nginx 通信”,點“允許”。
中文路徑 / 空格
解壓路徑不要帶空格或中文,否則 nginx -t 可能異常。
五、一條完整日常流程(記憶版)
改配置
用 VS Code 打開 C:\nginx\conf\nginx.conf 編輯。
檢查
nginx -t # 出現(xiàn) “successful” 才繼續(xù)。
熱加載
nginx -s reload # 不斷服務更新。
想停服
nginx -s quit # 優(yōu)雅關。
萬一卡死
taskkill /f /im nginx.exe # 強制清場。
六、快速查詢表(復制即可用)
| 操作 | 命令 |
|---|---|
| 啟動 | start nginx 或 nginx |
| 停止 | nginx -s quit(優(yōu)雅)/ nginx -s stop(強制) |
| 重載配置 | nginx -s reload |
| 驗證配置 | nginx -t |
| 重新打開日志 | nginx -s reopen |
| 查版本 | nginx -V |
| 殺進程 | taskkill /f /im nginx.exe |
把上面 7 句記住,Windows 下使用 Nginx 就夠用了。
-s是什么,為什么要-s
-s 是 nginx 在 Windows/Linux 上共有的“信號(signal)”參數(shù),用來 向“正在運行的 nginx 主進程”發(fā)命令,而不是再啟一個新進程。
沒有 -s 時,你敲 nginx 會嘗試 重新啟動一個 master,這顯然關不掉、也重載不了舊進程,所以必須靠 -s。
語法
nginx -s <signal>
signal 只能取 4 個值:
stop | quit | reload | reopen
四個信號分別干什么
| 信號 | 作用 | 對應 Unix 信號 |
|---|---|---|
| -s stop | 立即終止 主進程及其所有 worker(相當于 kill -TERM) | SIGTERM |
| -s quit | 優(yōu)雅退出——等現(xiàn)有連接處理完再關機 | SIGQUIT |
| -s reload | 熱重載配置——不丟連接、不重啟 worker,只重新加載 nginx.conf | SIGHUP |
| -s reopen | 重新打開日志文件(日志切割后用) | SIGUSR1 |
為什么“必須”帶 -s
- 不帶
-s時,nginx 認為你要 “啟動” 一個新實例; - 帶
-s時,nginx 會讀取logs/nginx.pid里的 PID,把對應信號發(fā)給 那個已經(jīng)運行的 master 進程,自己立即退出,不占用新端口。
換句話說:
“-s 讓 nginx 變成‘遙控器’,而不是‘新實例’。”
Windows 上同樣適用
雖然 Windows 沒有 Unix 信號機制,但 nginx.exe 內(nèi)部用 命名事件/線程通信 模擬了這四條命令,用法完全一致:
nginx -s stop # 關 nginx -s reload # 熱更
一句話記?。?/strong>
“想控制已運行的 nginx,就加 -s;不加 -s 就是重新啟動。”
七、總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
nginx報錯:[emerg] getpwnam(“www“)failed問題及解決
這篇文章主要介紹了nginx報錯:[emerg] getpwnam(“www“)failed問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03
nginx ServerName匹配規(guī)則實現(xiàn)
本文主要介紹了nginx ServerName匹配規(guī)則實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2007-02-02
nginx配置proxy_pass后返回404問題以及Nginx host相關變量的說明
這篇文章主要介紹了nginx配置proxy_pass后返回404問題以及Nginx host相關變量的說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01

