参考:http://www.cnblogs.com/GXLo/articles/5169098.html

一.准备

1.一台后端服务器,已安装Apache服务器,/var/www/html下已放置了一张图片head.jpg,IP为192.168.1.105

2.一台服务器,用来安装nginx,当做缓存服务器,IP为192.168.1.109


二、 Nginx(Ngx_cache)安装:

首先下载Nginx缓存模块,ngx_cache_purge相应版本,这里下载nginx-1.4版本,不同版本对应不同的Nginx版本,安装的时候要留心。

ulimit -SHn 65535
yum install pcre pcre-devel -y
wget http://nginx.org/download/nginx-1.0.11.tar.gz
http://labs.frickle.com/files/ngx_cache_purge-1.4.tar.gz
tarz xvf ngx_cache_purge-1.4.tar.gz
tarz xvf nginx-1.0.11.tar.gz
useradd www
cd nginx-1.0.11/
./configure  --user=www  --group=www  --add-module=../ngx_cache_purge-1.4--prefix=/usr/local/nginx  --with-http_stub_status_module  --with-http_ssl_module
make && make install

配置文件内容nginx.conf:

user  www www;
worker_processes 8;
error_log  /usr/local/nginx/logs/nginx_error.log  crit;
pid       /usr/local/nginx/nginx.pid;
worker_rlimit_nofile 65535;
events
{
  use epoll;
  worker_connections 65535;
}
http
{
  include       mime.types;
  default_type  application/octet-stream;
  charset  utf-8;
  server_names_hash_bucket_size 128;
  client_header_buffer_size 32k;
  large_client_header_buffers 4 32k;
  client_max_body_size 300m;
  sendfile on;
  tcp_nopush     on;
  keepalive_timeout 60;
  tcp_nodelay on;
  client_body_buffer_size  512k;
  proxy_connect_timeout    5;
  proxy_read_timeout       60;
  proxy_send_timeout       5;
  proxy_buffer_size        16k;
  proxy_buffers            4 64k;
  proxy_busy_buffers_size 128k;
  proxy_temp_file_write_size 128k;
  gzip on;
  gzip_min_length  1k;
  gzip_buffers     4 16k;
  gzip_http_version 1.1;
  gzip_comp_level 2;
  gzip_types       text/plain application/x-javascript text/css application/xml;
  gzip_vary on;
 #这里设置缓存目录,为/data/proxy_temp,/data/proxy_cache
  proxy_temp_path   /data/proxy_temp;
  proxy_cache_path  /data/proxy_cache  levels=1:2   keys_zone=cache_one:200m inactive=1d max_size=1g;
  upstream backend_server {
  server 192.168.1.105:80;
  }
  server
  {
    listen       80;
    server_name  127.0.0.1;
    location /
    {
         proxy_set_header Host  $host;
         proxy_set_header X-Forwarded-For  $remote_addr;
         proxy_pass http://backend_server;
    }
    location ~ .*\.(gif|jpg|jpeg|bmp|png|js|css|swf)?$     //缓存文件类型
    {
         proxy_cache cache_one;
         proxy_cache_valid 200 304 12h;
         proxy_cache_valid 301 302 1m;
         proxy_cache_valid any 1m;
         proxy_cache_key $host$uri$is_args$args;
         proxy_set_header Host  $host;
         proxy_set_header X-Forwarded-For  $remote_addr;
         proxy_pass http://backend_server;
    }
    location ~ /purge(/.*)
    {
     allow            127.0.0.1;
     deny            all;
     proxy_cache_purge    cache_one   $host$1$is_args$args;
    }
    access_log  off;
  }
}

###########################################################################################

说明

Nginx缓存服务器的配置主要通过proxy_cache相关命令来实现。

proxy_cache_path /backup/proxy_cache_dir levels=1:2 keys_zone=cache_one:4096m inactive=1d max_size=3g;

- poxy_cache_path:用于设置缓存的目录,后面跟缓存路径。最好将缓存目录放在一个独立的硬盘上。

- levels=1:2:levels用来设置目录深度,这里是两层目录深度,第一层是一个字符,第二层是两个字符。

- keys_zne:用来设置web缓存区名称,这里的cache_one后面的4096,表示内存缓存空间大小为4GB

- inactive:表示自动清除缓存文件的时间,这里的“d”表示1天没有被访问的内容自动清除,还可以使用分钟和小时计数,5m,5h。

- max_size:表示硬盘缓存空间可使用的最大值,默认情况下经访问的文件常将被放到内存中进行缓存,而在内存缓存空间不足时,Nginx会将不经常访问的数据从内存写到磁盘。

proxy_temp_path /backup/proxy_temp_dir;

- 用于指定临时缓存文件的存储路径,这里需要注意的是,两个存放缓存文件的目录必须在同一磁盘分区。


三、实验验证

前面提到,已经将一个图片文件head.jpg放置在192.168.1.105的后端服务器的/var/www/html下,启动Apache,Nginx配置好之后也需要启动;

1.在此情况下,先访问http://192.168.1.109/head.jpg,能访问到,此时apache和nginx均启动;

2.关闭后台apache,nginx保持开启,访问http://192.168.1.109/head.jpg,可见的情况是head.jpg还能访问到;去/data/proxy_temp和/data/proxy_cache下能发现生成的缓存文件;