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

