最近有個案子,客戶覺得我們第一次交上去的壓力測試結果太狼狽,要我們想辦法把數字做得更好,於是我們嘗試了 windows 內建的 Network Load Balance(NLB)來進行設定,礙於網路管理的基礎知識不足,遇到了非常多的阻礙 QQ
最後透過 Nginx 成功做到了 Load Balance,這個系列的文章就是來紀錄順便複習學習到的內容。
Beginner’s Guide
從 Nginx 的官網上下載下來的檔案內容其實很簡單,只有一個 exe 執行檔和一些資料夾。
Nginx 的運作方式主要是靠 nginx.conf
來決定的,這個檔案通常會在 /usr/local/nginx/conf
/etc/nginx
/usr/local/etc/nginx
這幾個目錄底下。
啟動 Nginx
- 雙擊來執行
nginx.exe
- 透過 cmd 切換到 nginx 的資料夾底下,執行
start nginx
對 Nginx 進行操作
nginx 被執行起來後就需要以 nginx -s <options>
的方式來控制:
其中 nginx -s stop
和 nginx -s quit
的差別在於:
quit
- 停止接收 request,等到手上這個 request 處理完之後,才會結束目前的服務stop
- 立刻結束服務
另外, nginx -s quit
只能由開啟 nginx 的使用者(帳號)執行。
除了 nginx -s stop
之外,最常會用到的應該是 nginx -s reload
。
如果 nginx.conf
有進行修改的話,執行 reload 後主程式才會吃到這個設定的更改。如果主程式設定成功,會通知其他舊有的程式,讓他們停止接收新的 request,將手上的 request 處理完之後結束服務,用新的設定開啟一個新的程式。如果主程式設定失敗的話,會把設定 rollback 成舊的設定並繼續執行。
config 檔案的名詞
在修改 nginx.conf
之前,先來認識一下 config 檔案裏面基本的組成元素:
simple directives
- 包含指令名稱和參數,兩者之間用半形空白來區隔,並且以半形分號;
作為結尾block directive
- 結構和simple directives
一樣,但他會被半形大括號{}
包起來context
- 一個block directive
裡面有其他的directive
,例如events
http
server
location
都是屬於context