一、nginx能做的事
1.反向代理:服務器根據客戶端的請求,從其關系的一組或多組后端服務器(如Web服務器)上獲取資源,然后再將這些資源返回給客戶端,客戶端只會得知反向代理的IP地址,而不知道在代理服務器后面的服務器簇的存在,簡單來說就是服務器無法被外部網絡進行訪問,必須通過代理
2.動靜分離:利用反向代理功能將所有動態資源的請求交給應用服務器,而靜態資源的請求(圖片,js,css)等則由nginx返回到瀏覽器,以此來減輕服務器壓力
3.負載均衡:當一台服務器短時間內被多個用戶訪問時,有可能會因為壓力過大而宕機,這個時候我們就需要用到負載均衡。建立服務器集群,用戶先訪問中間調度服務器,然后根據每個服務器的配置以及空閑情況來分配用戶訪問到哪台服務器上,分擔服務器壓力,讓每個服務器的壓力趨於平衡 一般情況下負載均衡搭配反向代理使用,先訪問代理服務器根據情況分配用戶
關於nginx的安裝可參考https://www.cnblogs.com/pandawan/p/10713961.html
二、簡單實現
1.准備了兩台服務器,一台是192.168.15.10,另一台是192.168.15.11,為了更明顯頁面改成如下內容
2.反向代理的實現
通過修改nginx的配置文件實現,打開/nginx/conf/nginx.conf 之后新增下圖屬性
保存重啟nginx之后,訪問192.168.15.10,出現的頁面是這個
可以看到訪問的是服務器1的nginx,但是頁面是第二台服務器的頁面,配置成功
3.負載均衡的幾種方式以及簡單實現
1.輪詢(默認):每個請求按時間順序分配到不同的后端服務器,如果服務器down掉,能自動剔除,修改nginx配置文件如下
按順序訪問服務器,每刷新一次就會更換一個服務器,關閉其中一台服務器上的Tomcat后,重復刷新依舊是同一台服務器
2.加權輪詢法:簡單來說按照自己設定的幾率將請求分配到服務器上,主要用於服務器性能分布不均的情況,修改如下
修改完之后第一次訪問是10的地址,隨后刷新11次,有8次是10的地址,接近於11的3倍
3.IP哈希法:每個請求按訪問ip的hash結果分配,可以將每個用戶固定到一台服務器上,使用與nginx配置修改如下
4.fair:按后端服務器的響應時間來分配請求,響應時間快的優先分配,nginx配置修改如下
5.URL哈希:按訪問URL哈希結果分配,讓每個URL分配到同一台服務器上,適用於服務器緩存。例如有三台服務器A,B,C下載存儲服務器D上的圖片資源,用戶被分配到A上,A訪問D下載返回給用戶。將圖片資源緩存一周,在一周內同一個URL資源請求可以定向到A,避免訪問到其他服務器上,令其他服務器再次訪問D服務器並下載圖片資源,造成不必要的帶寬,nginx配置修改如下
6.關於upstream的參數
down:當前server不參與負載
weight=2:負載權重為2
max_fails和fail_timeout:#服務器X秒內出現請求失敗X次,nginx會認為這台服務器已經宕機,X秒內不會再次進行請求,將請求轉發到其他正常機器,時間結束后再次請求
backup;#其他非backup宕機或者忙的時候,會請求這台機器(熱備機)