nginx tomcat 結合,建立負載均衡伺服器
部分內容轉自 http://www.cnblogs.com/naaoveGIS/
1. Web服務
nginx是常用的web伺服器,用於獲取靜態資源,類似的伺服器還有apache。
tomcat是基於java servlet 的 web 容器,用於獲取動態資源。
一般的web服務架構:前端部署nginx,後端部署tomcat。使用者訪問nginx,靜態資源nginx直接返回,動態資源的請求被nginx轉發到tomcat,tomcat將處理完的結構返回給nginx,然後到瀏覽器。
2.Nginx簡介
Nginx ("engine x") 是一個高效能的HTTP和反向代理伺服器,也是一個IMAP/POP3/SMTP
何為反向代理呢?即以代理伺服器來接受internet上的連線請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連線的客戶端,此時代理伺服器對外就表現為一個伺服器。
而Nginx主要完成的工作就是反向代理,比如我們向一臺伺服器的80埠傳送了請求,該請求首先由Nginx監聽到,其接受到請求內容後再轉發給其他伺服器,其他伺服器處理完後再將結果傳送給Nginx,最後由Nginx來統一返回給初始請求端。
Nginx最常見的使用方法就是作為靜態資源伺服器,比如將CSS,JS,html,htm等檔案進行快取處理。
3.環境搭建
3.1下載
首先在官網中下載所需版本:http://nginx.org/en/download.html。目前我使用的版本是windows環境下的1.9.15。
下載完畢後,解壓。
3.2開啟Nginx
開啟Nginx有兩種方法,一種是直接點選開啟,一種是命名行開啟。
a.點選開啟:
b.命名行開啟:
開啟成功後,在資源管理中可以看到:
3.3常見問題—啟動失敗
出現啟動失敗問題,一般是埠衝突問題,比如win7下的IIS已經啟動並佔用了80埠。在config目錄下找到nginx.conf,開啟檔案進行如下修改:
4.初步使用
4.1用網頁測試是否啟動成功
其中的配置為:
其表示監聽8010埠請求後,會首先去html資料夾下尋找index.html頁面。
4.2詳解部分引數含義
listen:表示當前的代理伺服器監聽的埠,預設的是監聽80埠。注意,如果我們配置了多個server,這個listen要配置不一樣,不然就不能確定轉到哪裡去了。
server_name:表示監聽到之後需要轉到哪裡去,這時我們直接轉到本地,這時是直接到nginx資料夾內。
location:表示匹配的路徑,這時配置了/表示所有請求都被匹配到這裡
root:裡面配置了root這時表示當匹配這個請求的路徑時,將會在這個資料夾內尋找相應的檔案,這裡對我們之後的靜態檔案伺服很有用。
index:當沒有指定主頁時,預設會選擇這個指定的檔案,它可以有多個,並按順序來載入,如果第一個不存在,則找第二個,依此類推。
4.3配置tomcat跳轉
通過proxy_pass配置請求轉發地址。即當訪問localhost的8010埠時,請求會跳轉至localhost的8080埠處。修改完Nginx的配置後不需要重啟Nginx,輸入如下命令即可:
測試如下:
5.進一步使用
5.1靜態檔案分離配置
上面我們直接試了一個小例子,讓nginx進行轉發,即所謂的反向代理。但實際上我們的需求不會是這樣的,我們需要分檔案型別來進行過濾,比如jsp直接給tomcat處理,因為nginx並不是servlet容器,沒辦法處理JSP,而html,js,css這些不需要處理的,直接給nginx進行快取。
下面我們來進行一下配置,讓JSP頁面直接給tomcat,而html,png等一些圖片和JS等直接給nginx進行快取。
這時最主要用的還是location這個元素,並且涉及到一部分正則,但不難,具體配置如下:
此時再直接輸入localhost:8010,則會報404錯誤了。但是輸入localhost:8010/index.jsp,則一樣可以跳轉至tomcat首頁中。
5.2 負載配置
當一臺伺服器出現故障後,我們需要將請求自動轉向另一臺伺服器,此種需求該如何配置呢?利用Nginx也是比較方便能夠實現,具體配置如下:
注意,上面還加上了一個weight屬性,此屬性表示各伺服器被訪問到的權重,weight越高訪問到的機率越高。
5.3其他配置