Nginx反向代理缓存设置

2015年7月2日 由 admin 留言 »

nginx设置web缓存,需要用到的相关指令:
1、proxy_cache #使用字段:http, server, location
2、proxy_cache_path #使用字段:http
3、proxy_cache_valid #使用字段:http, server, location

需要注意的事项:
1、windows下面设置缓存不会在指定的path生成的缓存文件
2、指定的path上一级目录需要存在,否则会报错 (假设缓存文件存放于/usr/local/cc/abc,那么cc目录需要事先建立)
3、proxy_cache_path 只能存放于http中,不能放置于server或location

实例:

user  www www;
worker_processes 8;
#worker_cpu_affinity auto;
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;
worker_rlimit_nofile 65535;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    use epoll;
    worker_connections  20480;
}


http {
    server_names_hash_bucket_size 512;  
    server_names_hash_max_size 512;
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay on;
    server_tokens off;
    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;

    proxy_cache_path /wwwroot/nginx/cache/one levels=1:2 keys_zone=one:50m inactive=1h max_size=1g; 
    proxy_cache_path /wwwroot/nginx/cache/two levels=1:2 keys_zone=two:50m inactive=1h max_size=1g; 

    upstream  lunxun1  {
              server   192.168.1.1:80;
              server   192.168.1.2:80;
              server   192.168.1.3:80;
	      server   192.168.1.4:80;
              ip_hash;
      }
    upstream  lunxun2  {
              server   192.168.2.1:80;
              server   192.168.2.2:80;
              server   192.168.2.3:80;
	      server   192.168.2.4:80;
              ip_hash;
      }
    include vhost/*.conf;
}

proxy_cache_path /wwwroot/nginx/cache/one levels=1:2 keys_zone=one:50m inactive=1h max_size=1g;
levels指定目录结构,可以使用任意的1位或2位数字作为目录结构,如 X, X:X,或X:X:X 例如: “2”, “2:2”, “1:1:2“,但是最多只能是三级目录。
keys_zone=one 参数用来为这个缓存区起名(proxy_cache 指令需要用到 其后对应缓存区名称)
one指的是共享池的名称,50m指的是内存缓存空间的大小
inactive=1h指如果缓存数据在1小时(天:d、秒:s、分:m)内没有被访问,将自动被删除,默认inactive为10分钟;
max_size=1g 指硬盘缓存大小为1g

下面是vhost里面的具体网站的conf文件配置

server {
	     listen       80 default;
	     server_name www.test.com;
             #增加两头部 查看缓存命中情况
             add_header Server-Via $server_addr;
             add_header Nginx-Cache $upstream_cache_status;
    location / {
             proxy_pass        http://test;
             proxy_set_header   Host             www.hao123.com;
             proxy_set_header   X-Real-IP        $remote_addr;
             proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
	     proxy_redirect off;

	     proxy_cache one;
             proxy_cache_valid 200 10m;

	     proxy_connect_timeout 60; 
	     proxy_read_timeout 600; 
	     proxy_send_timeout 600; 
              }
	     access_log   off;
	     error_log    /dev/null;
	 }

proxy_cache one; #设置一个缓存区域的名称,一个相同的区域可以在不同的地方使用
proxy_cache_valid 200 10m; #为不同的应答设置不同的缓存时间

#增加两头部 查看缓存命中情况和服务器地址
add_header Server-Via $server_addr;
add_header Nginx-Cache $upstream_cache_status;

用fiddler查看headers里面的Nginx-Cache、Server-Via
MISS 未命中
EXPIRED – expired。请求被传送到后端。
UPDATING – expired。由于proxy/fastcgi_cache_use_stale正在更新,将使用旧的应答。
STALE – expired。由于proxy/fastcgi_cache_use_stale,后端将得到过期的应答。
HIT 命中

参照资料:http://www.360doc.com/content/13/1114/12/7694408_329125489.shtml

广告位
分享到:

发表回复