精品軟體與實用教程
在Windows下如何安裝nginx
很多熟悉Linux的人都使用過nginx,nginx作為web的伺服器端,佔用資源少,功能強大,這個小巧且功能強大的nginx,正在慢慢地在吞食同為web服務端的Apache和IIS的份額。那究竟nginx到底有什麼強大的功能呢?除了web服務端的功能外,可能很多人未必了解nginx的真正強大的功能。
nginx,Apache,iis統稱為web服務端三劍客。
nginx [engine x] 是HTTP 和反向代理商伺服器、郵件代理伺服器和通用TCP/UDP 代理伺服器,最初由Igor Sysoev編寫。很長一段時間以來,它一直在許多負載重的俄羅斯網站上運行,包括 Yandex、 Mail.Ru、 VK和 Rambler。根據Netcraft 的數據, 2022 年4 月,nginx 服務或代理了21.79% 最繁忙的站點。以下是一些成功案例: Dropbox、 Netflix、 WordPress.com、 FastMail.FM。
用於 Windows 的nginx 版本使用本機Win32 API(不是Cygwin 模擬層)。目前只使用select()和poll()(1.15.9)連接處理方法,所以不應該期望高效能和可擴充性。由於這個和其他一些已知問題,Windows 的nginx 版本被認為是beta版本。目前,它提供了與UNIX 版本的nginx 幾乎相同的功能,除了XSLT 濾鏡、影像濾鏡、GeoIP 模組和嵌入式Perl 語言。
什麼是反向代理?
nginx不僅可以提供web服務端的基本功能,同時出色的反向代理功能也是非常強大的,反向代理(Reverse Proxy)方式是指以代理伺服器來接受internet上的連線請求,然後將請求轉送給內部網路上的伺服器,並將從伺服器上得到的結果傳回給internet上請求連線的客戶端,此時代理伺服器對外就表現為一個伺服器。
下載nginx
首先造訪nginx的官方網站,在官方網站中提供Windows版本的nginx伺服器端軟體。
造訪ngixn官方網站:https://nginx.org/
截止2022年,最新版本是nginx-1.21.6,點擊右側下載,在下載頁面下載Windows版本的nginx。
你可以選擇主線版本下載,也可以下載穩定版本。
點擊下載:nginx/Windows-1.21.6 | nginx/Windows-1.20.2
安裝nginx
下載完畢後,雙擊nginx.exe文件,執行nginx。
直接雙擊nginx.exe後,一個黑色的彈跳窗一閃而過,nginx已經啟動成功了。
或開啟cmd指令窗口,切換到nginx解壓縮目錄下,輸入指令nginx.exe 或start nginx ,回車即可開啟nginx。
如何檢查nginx是否啟動成功?在瀏覽器中輸入 http://localhost
如果可以看到nginx的歡迎頁面,那麼恭喜你,已經啟動成功了。
配置nginx
nginx已經安裝成功了,下面要設定nginx,跟Linux一樣,在Windows中的nginx也需要修改nginx的設定檔來設定nginx。
點擊打開 CONF 資料夾,在資料夾內使用記事本方式編輯 nginx.conf 文件
http{
server{
listen 80; #監聽端口,基於IP配置的時候變更此處,例如192.168.1.100:8080;
server_name boxpu.com;
#主機域名,實際項目發佈的話,填公網上的域名,本地部署的話,可以在C:\Windows\System32\drivers\etc\hosts檔案中添加IP和域名的映射
#映射解析,/代表根路徑,此處解析還有正規表示式的解析方式。
location / {
root E:/uzbox; #網站所在路徑
index index.html index.htm; #首頁文件
}
}
}
網站所在目錄設定的時候,要使用/,不要使用\。
http{}中一些常用配置
include mime.types; #檔案副檔名與檔案類型對應表
default_type application/octet-stream; #預設檔案類型
sendfile on; #開啟高效文件傳輸模式,sendfile指令指定nginx是否呼叫sendfile函數來輸出文件,對於普通應用設為on,如果用來進行下載等應用磁碟IO重負載應用,可設定為off,以平衡磁碟與網路I/O處理速度,降低系統的負載。注意:如果圖片顯示不正常把這個改成off。
autoindex on; #開啟目錄清單訪問,適當下載伺服器,預設為關閉。
tcp_nopush on; #防止網路阻塞
tcp_nodelay on; #防止網路阻塞
keepalive_timeout 120; #長連線逾時時間,單位是秒
gzip on; #開啟gzip壓縮輸出
nginx.conf檔案設定完畢後,使用下方指令偵測一下設定檔是否正確。
nginx -t
輸入指令後,設定正確會傳回syntax is ok,如果錯誤的話,會傳回錯誤的行。
如果使用預設連接埠80,首先檢查conf目錄下的nginx.conf設定檔中,連接埠設定是否為80,確認完畢後使用下面指令檢查80埠是否可用。
netstat -ano | findstr 0.0.0.0:80
或使用下面的連接埠檢測命令:
netstat -ano | findstr "80"
修改了nginx的設定檔nginx.conf 時,不需要關閉nginx後重新啟動nginx,只需要執行下面的指令,即可讓變更生效。
nginx -s reload
如果你想關閉關閉nginx
在CMD視窗中輸入nginx指令
nginx -s stop
或者
nginx -s quit
nginx設定反向代理
在nginx.conf設定檔中加入tomcat_server區塊,在tomcat_server區塊中填入需要代理程式的網站網域。
#upstream tomcat_server區塊反向代理設定。
upstream tomcat_server{
server t1.boxpu.com;
}
如果需要在反向代理中配置負載平衡,可以配置多個反向代理網站。
#負載平衡網站配置核心區塊
upstream tomcat_server{
server t1.boxpu.com weight=1;
server t2.boxpu.com weight=2;
}
weight屬性,此屬性表示各伺服器被存取的權重,weight越高被存取到的幾率越高。例如weight=2,nginx有優先訪問t2.boxpu.com,當t2.boxpu.com訪問用戶過多時,會自動切換到t1.boxpu.com。
上面設定完畢tomcat_server區塊後,在server區塊中設定反向代理。
設定完成後使用nginx -t 檢查一下語法是否正確,最後重新啟動nginx
server {
location / {
proxy_pass http://tomcat_server;
#在根目錄下,使用proxy_pass呼叫tomcat_server區塊。
}
}
nginx -s reload
結語
在Windows下安裝nginx已經成功了,Windows下的設定方式和Linux下大同小異,沒有什麼差別,唯一的問題是root web存放目錄上的差別。在目錄的呼叫上,要使用/,不要使用\。
nginx -s stop 快速關機
nginx -s quit 優雅關機
nginx -s reload 更改配置,使用新配置啟動新工作進程,優雅關閉舊工作進程
nginx -s reopen 重新開啟日誌文件
已知的問題
儘管可以啟動幾個工人,但實際上只有一個工人在做任何工作。
不支援UDP 代理功能。
未來可能的增強功能
作為服務運行。
使用I/O 完成連接埠作為連接處理方法。
在單一工作進程中使用多個工作執行緒。