1. nginx配置(nginx能夠設置proxy_cache緩存模塊來替代squid緩存)。javascript
查看cpu個數,每一個cpu的核數css
cat /proc/cpuinfo processor n cpu個數 cpu family cpu核心數
wget工具,先切換到/tmp目錄、、html
安裝的軟件不在/usr/bin目錄下,因此沒法直接用命令,能夠作個軟鏈接java
#假如軟件的安裝目錄是/usr/local/bin/lrz cd /usr/bin #切換到命令目錄下 ln -s /usr/local/bin/lrz rz #創建軟鏈接
nginx配置文件詳解:nginx
#啓動進程,一般設置成和cpu的數量相等 worker_processes 1; events { worker_connections 1024; #單個worker_processes最大併發數 #若是這個值超過1024就要出警告,此時要設置 worker_rlimit_nofile xxxxx; 設置的worker_connections仍是不能超過worker_rlimit_nofile的值,不然還會警告 } # 計算該設置可承受的最大併發 worker_connections * worker_processes,若是是反向代理 worker_connections * worker_processes / 4 #gzip的設置 gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml image/gif image/jpg image/jpeg image/png image/x-png image/pjpeg; gzip_vary on; #設置代理緩存模塊兒的參數 proxy_connect_timeout 600; proxy_read_timeout 600; proxy_send_timeout 600; proxy_buffer_size 16k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; proxy_temp_path temp_path; #定義各個緩存空間,以便後面配置各個網站的時候用 proxy_cache_path /disk1/nginx_cache/cache_path levels=2:2 keys_zone=cache_one:1000m inactive=1d max_size=10M; proxy_cache_path /disk1/nginx_cache/cache_path levels=2:2 keys_zone=cache_static:1000m inactive=1d max_size=10M; /*levels設置目錄層次 keys_zone設置緩存名字和共享內存大小 inactive在指定時間內沒人訪問則被刪除在這裏是1天 max_size最大緩存空間*/
負載均衡和proxy_cache的設置web
upstream www_aaa_com { #設置負載均衡的權重 server 127.0.0.1:81 weight=6; server 10.28.7.66:81 weight=2; } server { listen 80; server_name www.aaa.com; location / { //nginx直接訪問的路徑,這裏存儲靜態頁面,因此不讓它經過apache,能夠直接訪問 root /disk1/www/aaa/frontweb/front/Html; index index.html; if (!-f $request_filename) { #若是靜態頁面不存在,就轉到apache,生成相關靜態頁面 proxy_pass http://127.0.0.1:81; } proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_connect_timeout 300; proxy_read_timeout 300; proxy_send_timeout 300; } location ~ /deleteallpic(/.*) { proxy_cache_purge cache_static $host$1$is_args$args; } location ~ .*\.(jpeg|jpg|png|gif)?$ { expires 30d; proxy_cache cache_one; proxy_cache_valid 200 304 301 302 10d; proxy_cache_valid any 1d; proxy_cache_key $host$uri$is_args$args; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://www_aaa_com; } location ~ .*\.(js|css)?$ { expires 30d; proxy_cache cache_static; //根keys_zone後的內容對應 proxy_cache_valid 200 304 301 302 10d; //哪些狀態緩存多長時間 proxy_cache_valid any 1d; //其餘的緩存多長時間 proxy_cache_key $host$uri$is_args$args; //經過key來hash,定義KEY的值 proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://www_aaa_com; } access_log logs/www.aaa.com.access_log.log; error_log logs/www.aaa.com.error_log.log; }
nginx upstream的幾種配置方式算法
nginx 的upstream目前支持4種方式的分配apache
一、輪詢(默認)後端
每一個請求按時間順序逐一分配到不一樣的後端服務器 ,若是後端服務器down掉,能自動剔除。緩存
二、weight
指定輪詢概率,weight和訪問比率成正比,用於後端服務器性能不均的狀況。
例如:
upstream bakend {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
二、ip_hash
每一個請求按訪問ip的hash結果分配,這樣每一個訪客固定訪問一個後端服務器,能夠解決session 的問題。
例如:
upstream bakend {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}
三、fair(第三方)
按後端服務器的響應時間來分配請求,響應時間短的優先分配。
upstream backend {
server server1;
server server2;
fair;
}
四、url_hash(第三方)
按訪問url的hash結果來分配請求,使每一個url定向到同一個後端服務器,後端服務器爲緩存時比較有效。
例:在upstream中加入hash語句,server語句中不能寫入weight等其餘的參數,hash_method是使用的hash算法
upstream backend {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}
注意:
upstream bakend{
#定義負載均衡 設備的Ip及設備狀態
ip_hash;
server 127.0.0.1:9090 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup;
}
每一個設備的狀態設置爲: 1.down 表示單前的server暫時不參與負載 2.weight 默認爲1.weight越大,負載的權重就越大。 3.max_fails :容許請求失敗的次數默認爲1.當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤 4.fail_timeout:max_fails次失敗後,暫停的時間。 5.backup: 其它全部的非backup機器down或者忙的時候,請求backup機器。因此這臺機器壓力會最輕