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机器。因此这台机器压力会最轻