平滑升级nginx0.8.46到nginx1.0,并增加清除缓存模块

×××:

wget http://labs.frickle.com/files/ngx_cache_purge-1.0.tar.gz

wget http://www.nginx.org/download/nginx-1.0.0.tar.gz

1、升级步骤:

  1. tar zxvf ngx_cache_purge-1.0.tar.gz 
  2. tar zxvf nginx-1.0.0.tar.gz 
  3. ./configure --user=www --group=www  --add-module=../ngx_cache_purge-1.0 --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module 

按原来的安装路径配置,自己需要的包打上。

3、然后make,但不要make instal

4、编译完,在objs目录下有一个nginx执行文件,就是它了。备份下原来老的nginx文件

mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old

 

5、在把新objs下的nginx cp到sbin下。

cp /root/nginx-1.0.0/objs/nginx /usr/local/nginx/sbin/

 

6、nginx -t 测试下,显示通过。

 

7、执行以下命令,让nginx把nginx.pid改成nginx.pid.oldbin 跟着启动新的nginx

kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`

 

8、退出旧的nignx

kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

 

9、升级完成。

 

10、清除缓存模块配置:

 

  1. vi /usr/local/webserver/nginx/conf/nginx.conf 
  2.  
  3. user  www www; 
  4. worker_processes 8; 
  5. error_log  /usr/local/webserver/nginx/logs/nginx_error.log  crit; 
  6. pid        /usr/local/webserver/nginx/nginx.pid; 
  7. #Specifies the value for maximum file descriptors that can be opened by this process.  
  8. worker_rlimit_nofile 65535; 
  9. events  
  10.   use epoll; 
  11.   worker_connections 65535; 
  12. http  
  13.   include       mime.types; 
  14.   default_type  application/octet-stream; 
  15.   charset  utf-8;   
  16.   server_names_hash_bucket_size 128; 
  17.   client_header_buffer_size 32k; 
  18.   large_client_header_buffers 4 32k; 
  19.   client_max_body_size 300m;    
  20.   sendfile on
  21.   tcp_nopush     on
  22.   keepalive_timeout 60; 
  23.   tcp_nodelay on
  24.   client_body_buffer_size  512k; 
  25.   proxy_connect_timeout    5; 
  26.   proxy_read_timeout       60; 
  27.   proxy_send_timeout       5; 
  28.   proxy_buffer_size        16k; 
  29.   proxy_buffers            4 64k; 
  30.   proxy_busy_buffers_size 128k; 
  31.   proxy_temp_file_write_size 128k; 
  32.  
  33.   gzip on
  34.   gzip_min_length  1k; 
  35.   gzip_buffers     4 16k; 
  36.   gzip_http_version 1.1; 
  37.   gzip_comp_level 2; 
  38.   gzip_types       text/plain application/x-javascript text/css application/xml; 
  39.   gzip_vary on
  40.   #注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区 
  41.   proxy_temp_path   /data/proxy_temp_dir; 
  42.   #设置Web缓存区名称为cache_one,内存缓存空间大小为200MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。 
  43.   proxy_cache_path  /data/proxy_cache_dir  levels=1:2   keys_zone=cache_one:200m inactive=1d max_size=30g; 
  44.    
  45.   upstream backend_server { 
  46.     server   192.168.8.43:80 weight=1 max_fails=2 fail_timeout=30s; 
  47.     server   192.168.8.44:80 weight=1 max_fails=2 fail_timeout=30s; 
  48.     server   192.168.8.45:80 weight=1 max_fails=2 fail_timeout=30s; 
  49.   } 
  50.  
  51.   server 
  52.   { 
  53.     listen       80; 
  54.     server_name  www.yourdomain.com 192.168.8.42; 
  55.     index index.html index.htm; 
  56.     root  /data0/htdocs/www;   
  57.  
  58.     location / 
  59.     { 
  60.          #如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。 
  61.          proxy_next_upstream http_502 http_504 error timeout invalid_header; 
  62.          proxy_cache cache_one; 
  63.          #对不同的HTTP状态码设置不同的缓存时间 
  64.          proxy_cache_valid  200 304 12h; 
  65.          #以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内 
  66.          proxy_cache_key $host$uri$is_args$args; 
  67.          proxy_set_header Host  $host; 
  68.          proxy_set_header X-Forwarded-For  $remote_addr; 
  69.          proxy_pass http://backend_server; 
  70.          expires      1d; 
  71.     } 
  72.      
  73.     #用于清除缓存,假设一个URL为http://192.168.8.42/test.txt,通过访问http://192.168.8.42/purge/test.txt就可以清除该URL的缓存。 
  74.     #配置后,须重启nginx才能成功。 
  75.     location ~ /purge(/.*) 
  76.     { 
  77.      #设置只允许指定的IP或IP段才可以清除URL缓存。 
  78.      allow            127.0.0.1; 
  79.      allow            192.168.0.0/16; 
  80.      deny            all
  81.      proxy_cache_purge    cache_one   $host$1$is_args$args; 
  82.     }     
  83.  
  84.     #扩展名以.php、.jsp、.cgi结尾的动态应用程序不缓存。 
  85.     location ~ .*\.(php|jsp|cgi)?$ 
  86.     { 
  87.          proxy_set_header Host  $host; 
  88.          proxy_set_header X-Forwarded-For  $remote_addr; 
  89.          proxy_pass http://backend_server; 
  90.     } 
  91.  
  92.     access_log  off
  93.   }