概述
介紹
Nginx是一個高性能的HTTP服務器代理,實現對HTTP請求的處理。 它沒啥別的本事,就是一箇中介代理,把HTTP請求攔截下來之後交給Apache、Tomcat等WEB容器去處理。當然這個中介代理還會點武術的,它本身也可以完成對靜態資源的請求處理,性能還不錯,這個我在後面會講到。
主要作用
負載均衡
將一個請求,分攤給多個不同的服務器(WEB容器)去處理。這些服務器可能在一臺主機上,也可以在其它主機,也可以是內網主機,也可以是外網。
就像你去餐廳喫飯,有配菜、炒菜、傳菜、上菜等不同環節不同的人負責。這樣整個餐廳就能爲很多顧客服務,而且任何一個環節出錯,比如服務員臨時請假了,可以隨時找另外的服務員替補,不會造成整個餐廳無法繼續運營。如果是一家小飯館,所以事情可能都是老闆一個人去做。
動靜分離
將簡單的靜態資源請求交給自己(這方面Nginx性能也比較優越)或者其它服務器處理,將動態資源請求交給其它服務處理。
安裝Nginx
ps:我使用Windows進行本案例演示,如果需要在linux部署,需要下載linux版本。
訪問官網,下載安裝包:
http://nginx.org/en/download.html
解壓當前電腦一個無中文字符、無空格的目錄:
雙擊nginx,會看到一個黑窗口一閃而過:
在任務管理器種,如果看到如下兩個進程運行(不能多,也不能少),代表啓動成功:
目錄介紹
conf:Nginx核心配置文件所在目錄,其中重要的是nginx.conf文件,後面我們會使用到到它。
logs:日誌目錄,其中最主要的是errs.log文件,如果啓動之後在任務管理器沒有看到程序啓動,可以通過分析該文件的錯誤輸出定位問題。
temp:存放臨時文件的目錄。
html:存放靜態資源的目錄,當然你也可以在nginx.conf配置文件種指定其它位置。
主要命令
在CMD進入Nginx安裝目錄:
start nginx代表啓動Nginx:
nginx -v 查看版本號:
nginux -t 驗證是否配置成功:
nginx -s reload 配置文件如果修改,重新進行載入使其神效:
nginx -s stop 正常停止或關閉:
nginx -s quit 快速停止或關閉:
ps:因爲上面已經講nginx關閉了,所以這裏會報錯:
Nginx使用
配置Nginx虛擬服務器
這個是Nginx最有用,也是最核心的功能。一個Nginx可以配置多個虛擬服務器。Nginx通過監聽80端口接收到HTTP請求,然後通過虛擬服務器的配置規則和條件將請求轉發到其它服務器。 這就是實現負載均衡的主要技術原理。
我們打開conf/nginx.conf文件,如下圖所示就是Nginx默認配置了一個虛擬服務器:
我們解釋一下其中主要的幾個配置項的作用:
listen 80; 監聽所有80端口的訪問。
server_name localhost; 監聽主機名爲localhost的訪問。
當以上條件滿足時,執行以下規則:
location / { /代表只要訪問根路徑,就執行以下內容
root html; 指定訪問路徑爲當前html目錄
index index.html index.htm; 如果不指定資源,默認訪index.html 或者 index.htm
}
以上內容翻譯成人話,就是:如果你訪問localhost這個”域名“,不指定訪問哪個頁面,我就默認給你index.html 或者 index.htm。
我們來驗證一下。
我們編輯 html/index.html:
然後在瀏覽器訪問:localhost
證明了虛擬機配置所代表的含義。
下面還有一段配置,代表當出現500、502、404等錯誤時,訪問/50x.html,而location又指明,50x.html的路徑也在當前html目錄:
虛擬服務器配置規則
server
在http的內容中可以配置多個server,每個server都是一個可以接收http請求的虛擬服務器。
listen
表示該server在nginx中運行時監聽的nginx服務器上所有該端口的訪問。
server_name
listen發現請求後,判斷請求中的host頭,匹配則進入該server。需要注意的是,不同的server配置,監聽端口和域名名稱不能相同!
location /
負責計算請求uri路徑,判斷和規則匹配與否,不匹配則不處理,一旦匹配進入到location。例如,location / 表示所有路徑以/開始的都匹配。
location的匹配規則和優先級:
在同一個server的內容裏,可以同時存在多個location,根據請求中攜帶uri地址結構不同值不同,分到不同location來出不同的請求。
涉及location pattern有哪些內容,多個location同時匹配成功時,優先級如何判斷?匹配規則 按照從上到下匹配優先級規則:
通配
location /
只要滿足server中端口和域名都能匹配到這個/
proxy_pass
表示代理路徑,一旦進入location,可以通過這個關鍵字轉向其它服務器。
負載均衡配置
有了以上的基礎,我們可以着手配置負載均衡了。
輪詢方式負載均衡的實現
在server的同級配置集羣服務器列表:
然後配置具體規則。以下內容表示,只要用戶通過瀏覽器訪問/localhost/testMultis將分別交由upstream toservers{}中的服務器進行輪詢處理:
權重負載均衡的實現
以下配置內容,將按照10%,20%,70%的比例將請求交由這些服務器處理:
到此,Nginx的主要使用就介紹完了。