nginx是一個高性能的HTTP和反向代理服務器,同時也是一個IMAP/POP3/SMTP 代理服務器。它主要有以下優點:
- 高併發連接:
官方測試能夠支撐5萬併發連接,在實際生產環境中跑到2~3萬併發連接數。 - 內存消耗少:
在3萬併發連接下,開啓的10個Nginx 進程才消耗150M內(15M*10=150M)。 - 配置文件非常簡單:
風格跟程序一樣通俗易懂。 - 成本低廉:
Nginx爲開源軟件,可以免費使用。而購買F5 BIG-IP、NetScaler等硬件負載均衡交換機則需要十多萬至幾十萬人民幣。 - 支持Rewrite重寫規則:
能夠根據域名、URL的不同,將 HTTP 請求分到不同的後端服務器羣組。 - 內置的健康檢查功能:
如果 Nginx Proxy 後端的某臺 Web 服務器宕機了,不會影響前端訪問。 - 節省帶寬:
支持 GZIP 壓縮,可以添加瀏覽器本地緩存的 Header 頭。 - 穩定性高:
用於反向代理,宕機的概率微乎其微
由於nginx的性能很好,因此國內很多大公司都在使用,最主要的原因也是nginx是開源免費的。除了上面描述的一系列功能,項目中主要用nginx來實現以下三個功能:
- 動靜分離
- 反向代理
- 負載均衡
負載均衡
負載均衡主要有以下特點:
- 分散後臺服務器的負載
- 自動去掉後臺宕機的服務器
- 緩存後臺請求內容,加速請求速度
nginx負載均衡主要有以下五種策略:
- 輪詢(默認)
每個請求按時間順序逐一分配到不同的後端服務器,如果後端服務器down掉,能自動剔除。 - weight
指定輪詢機率,weight和訪問比率成正比,用於後端服務器性能不均的情況。 - ip_hash
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個後端服務器,可以解決session的問題。 - fair(第三方)
按後端服務器的響應時間來分配請求,響應時間短的優先分配。 - url_hash(第三方)
按訪問url的hash結果來分配請求,使每個url定向到同一個後端服務器,後端服務器爲緩存時比較有效。
策略簡單理解就是nginx 依據什麼規則進行轉發到各個服務器上面
環境搭建:
2個tomcat都啓動起來,tomcat相關知識這裏不進行贅述
修改tomcat的title避免啓動多了不知道哪個是哪個
我們可以去tomcat服務器中找打bin/Catalina.bat(Windows環境下,linux下找到.sh文件即可)文件,依次修改TITLE選項爲app01、app02、app03:
主要說下nginx的配置
主要是在config/nginx.config文件中:
使用upstream來配置tomcat集羣,其主要配置如下,兩臺服務器,在最後一行可以指定負載均衡的策略,如果什麼也不寫默認輪詢策略,這裏我們使用輪詢策略,主要是方便觀察:
這裏我配置了2個
觀察效果
上面2個頁面一直替換着顯示,證明訪問不通的tomcat
但是這個帶有session的系統一直進不去,也很正常,在tomcat1裏面登錄後,再訪問進入tomcat2裏面了 session沒有需要重新登錄,所以就一直再這個地方, 後面再學習session共享的問題吧