⼀、Nginx 反向代理實現
1、反向代理與正向代理的區別
正向代理:
正向代理是指客戶端與⽬標服務器之間增加⼀個代理服務器,客戶端直接訪問代理服務器,在 由代理服務器訪問⽬標服務器並返回客戶端並返回 。這個過程當中客戶端需要知道代理服務 器地址,並配置連接。
反向代理:
反向代理是指 客戶端訪問⽬標服務器,在⽬標服務內部有⼀個統⼀接⼊⽹關將請求轉發⾄后 端真正處理的服務器並返回結果。這個過程當中客戶端不需要知道代理服務器地址,代理對客 戶端⽽⾔是透明的。
反向代理與正向代理的區別:
2、nginx代理基本配置
Nginx 代理只需要配置 location 中配置proxy_pass 屬性即可。其指向代理的服務器地址。
# 正向代理到baidu 服務
location = /baidu.html {
proxy_pass http://www.baidu.com;
}
# 反向代理至 本機的8010服務
location /luban/ {
proxy_pass http://127.0.0.1:8010;
}
二、負載均衡配置與參數解析
1、updtream實現
upstream backend { server 127.0.0.1:8010 weight=1; server 127.0.0.1:8080 weight=2; } location / { proxy_pass http://backend; }
2、upstream相關參數
service 反向服務地址 加端⼝ weight 權重 max_fails 失敗多少次 認為主機已掛掉則,踢出 fail_timeout 踢出后重新探測時間 backup 備⽤服務 max_conns 允許最⼤連接數 slow_start 當節點恢復,不⽴即加⼊,⽽是等待 slow_start 后加⼊服務對列。
3、upstream負載均衡算法介紹
ll+weight: 輪詢加權重 (默認)
ip_hash : 基於Hash 計算 ,⽤於保持session ⼀⾄性
url_hash: 靜態資源緩存,節約存儲,加快速度(第三⽅)
least_conn :最少鏈接(第三⽅)
least_time :最⼩的響應時間,計算節點平均響應時間,然后取響應最快的那個,分配更 ⾼權重(第三⽅)
三、Nginx ⾼速緩存
1、nginx靜態緩存基本配置
⼀、在http元素下添加緩存區聲明 #proxy_cache_path 緩存路徑 #levels 緩存層級及目錄位數 #keys_zone 緩存區內存大小 #inactive 有效期 #max_size 硬盤大小 proxy_cache_path /data/nginx/cache_luban levels=1:2 keys_zone=cache_luban:500m inactive=20d max_size=1g; ⼆、為指定location 設定緩存策略。 # 指定緩存區 proxy_cache cache_luban; #以全路徑md5值做做為Key proxy_cache_key $host$uri$is_args$args; #對不同的HTTP狀態碼設置不同的緩存時間 proxy_cache_valid 200 304 12h;
緩存參數說明:
2、緩存清除
該功能可以采⽤第三⽅模塊 ngx_cache_purge 實現。
為nginx 添加 ngx_cache_purge 模塊
#下載ngx_cache_purge 模塊包 ,這里nginx 版本為1.6.2 purge 對應2.0版
wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz2
#查看已安裝模塊
./sbin/nginx -V
#進入nginx安裝包目錄 重新安裝 --add-module為模塊解壓的全路徑
./configure --prefix=/root/svr/nginx --with-http_stub_status_module -with-http_ssl_module --add-module=/root/svr/nginx/models/ngx_cache_purge2.0
#重新編譯
make
#拷貝 安裝目錄/objs/nginx 文件用於替換原nginx 文件
#檢測查看安裝是否成功
nginx -t
清除配置:
location ~ /clear(/.*) { #允許訪問的IP allow 127.0.0.1; allow 192.168.0.193; #禁止訪問的IP deny all; #配置清除指定緩存區和路徑(與proxy_cache_key一至) proxy_cache_purge cache_item $host$1$is_args$args; }
配置好以后 直接訪問 :
http://192.x.x.x/clear/
有參數的話后面跟參數:
http://192.x.x.x/clear/?a=1