在macOS和linux中使用nginx我早已經(jīng)輕車熟路。突然切到windows的環(huán)境中,我反而不會用了。
之前寫了《windows使用nginx探索筆記》內(nèi)容比較冗長,所以本文盡量精簡一下。
環(huán)境
操作系統(tǒng):windows 2008R2 Datacenter
已經(jīng)安裝的軟件:
- SQL Server 2014
- JDK 1.8
nginx
下載
推薦官網(wǎng)下載
https://nginx.org/en/download.html
本文中我下載的版本
https://nginx.org/download/nginx-1.20.2.zip
解壓
上面下載的文件,我解壓來以下路徑。
C:\manuli\nginx-1.20.2
這個路徑隨意即可。
啟動nginx服務
不要直接雙擊運行,根據(jù)官方文檔中介紹介紹的方法。https://nginx.org/en/docs/windows.html
nginx默認端口80,所以請使用管理員身份打開PowerShell
并執(zhí)行以下命令
cd C:\manuli\nginx-1.20.2
start nginx
幸運的話,這樣已經(jīng)啟動成功了。訪問http://localhost/就會看到如下的界面:
如果你并沒有這么幸運,在文章末尾有故障排除方法。
小知識點:
在Linux上,以一般用戶身份執(zhí)行一個需要占用小于1024端口的程序,會得到錯誤提示:Permission denied
這是因為在Linux平臺,小于1024的端口被認為是特殊端口。
我想在windows下也有類似的設定。所以如果是默認80端口,則需要使用管理員身份執(zhí)行。
基本使用
nginx/Windows 作為標準控制臺應用程序(不是服務)運行,可以使用以下命令對其進行管理:
- 快速停止服務
nginx -s stop
- 優(yōu)雅停止服務
nginx -s quit
- 更改配置,使用新配置啟動新工作進程,優(yōu)雅關閉舊工作進程
nginx -s reload
- 重新打開日志文件
nginx -s reopen
設置開機自動啟動
設置開機啟動,在維護中還是非常有必要的。這樣當服務器意外重新啟動也不會造成影響了。
下載WinSW.NET4 v2.11.0
不適配的版本
這里使用winsw
來配置服務。關于winsw
的版本,我測試了以下版本是失敗的。
- WinSW v3.0.0-alpha.10 -X64
運行沒有任務反應,沒有創(chuàng)建服務成功。 - WinSW v2.11.0 -X64
運行報錯:
Failed to load the dll from [C:\Users\itkey\AppData\Local\Temp\.net\WinSW-x64\jqstklar.4hl\coreclr.dll], HRESULT: 0x8007
0057
適配的版本
就在我要放棄使用winsw時,我發(fā)現(xiàn)我這臺機器上安裝有.NET Framework 4
我不清楚是系統(tǒng)自帶,還是因為安裝了sql server自動安裝了。
我操作的服務器是windows 2008 R2
,實際可成功使用winsw版本W(wǎng)inSW v2.11.0 NET4
https://github.com/winsw/winsw/releases/tag/v2.11.0
配置自動啟動服務
- 把WinSW.NET4.exe復制到
C:\manuli\nginx-1.20.2
目錄并重命為nginx-server.exe
- 在
C:\manuli\nginx-1.20.2
目錄新增nginx-server.xml
,只要與上面的exe名稱一樣就行了。
內(nèi)容如下:
<service>
<!-- ID of the service. It should be unique across the Windows system-->
<id>nginx</id>
<!-- Display name of the service -->
<name>nginx</name>
<!-- Service description -->
<description>nginx 反向代理</description>
<!-- Path to the executable, which should be started -->
<executable>C:\manuli\nginx-1.20.2\nginx.exe</executable>
</service>
- 管理員權(quán)限打開PowerShell,并執(zhí)行以下命令
cd C:\manuli\nginx-1.20.2
nginx-server.exe install
這樣服務就創(chuàng)建成功了。
- win+r運行輸入
Services.msc
,回車打開服務管理器
現(xiàn)在就可以在服務里找到我的剛才創(chuàng)建的服務了。
- 點擊啟動按鈕,可以立馬啟動
nginx
。 - 點擊停止按鈕,就可以立馬停止
nginx
。 - 啟動類型默認是
自動
,就說明是開機啟動的。如果以后不想開機啟動就設置成手動
設置完成以后,重新啟動電腦測試一下。發(fā)布nginx已經(jīng)可以開機自動啟動啦!任務完成!
故障
目前我遇到過的故障基本是因為以下兩個原因?qū)е拢?/p>
-
nginx
使用了特殊端口比如1024以內(nèi)的端口,需要管理員權(quán)限執(zhí)行。 -
nginx
的所用的端口已經(jīng)被占用
故障排查技巧
查進程
tasklist /fi "imagename eq nginx.exe"
如果能查到進程,基本上是成功了。
查報錯日志
日志保存路徑。nginx-1.20.2\logs\error.log
windows2008中80端口被System占用的問題
查了一下進程占用,占用的進程名是System
,PID為4
直接說結(jié)論:
-
IIS
占用了80端口 -
SQL Server Reporting Services
服務也會占用80端口
把以上兩個服務禁用即可。
解決辦法: -
把
World Wide Web Publishing Service
服務設置成禁用
。文章來源:http://www.zghlxwxcb.cn/news/detail-471981.html
-
把
SQL Server Reporting Services
服務設置成手動
。
詳細探索過程見:
《windows使用nginx探索筆記》
https://blog.csdn.net/lxyoucan/article/details/126898516文章來源地址http://www.zghlxwxcb.cn/news/detail-471981.html
參考
- 《windows使用nginx探索筆記》
https://blog.csdn.net/lxyoucan/article/details/126898516 - 《nginx for Windows》
https://nginx.org/en/docs/windows.html - 《Linux上1024以下的端口》
https://blog.csdn.net/m0_48283915/article/details/109046019 - 《windows下快速安裝nginx 并配置 開機自啟動》
https://cloud.tencent.com/developer/article/1888447
到了這里,關于windows安裝nginx并設置開機自啟動的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!