例子,nginx图片缓存服务器 配置文件。
复制代码代码示例:
#需要建立www用户和www用户组
user www www; worker_processes 8; error_log /usr/local/nginx-0.8.32/logs/error.log crit; pid /usr/local/nginx-0.8.32/nginx.pid; 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; #注:images_temp和images_cache指定的路径必须在同一分区 proxy_temp_path :/usr/local/nginx-0.8.32/html/SD/images_temp; #设置Web缓存区名称为cache_one,内存缓存空间大小为200MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。 Proxy_cache_path :/usr/local/nginx-0.8.32/html/SD/images_cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g; server { listen 80; server_name 192.168.0.146; location / { proxy_cache cache_one; #对不同的HTTP状态码设置不同的缓存时间 proxy_cache_valid 200 304 12h; #以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内 proxy_cache_key $host$uri$is_args$args; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://192.168.0.146:8080; log_format cache '***$time_local ' '***$upstream_cache_status ' '***Cache-Control: $upstream_http_cache_control ' '***Expires: $upstream_http_expires ' '***"$request" ($status) ' '***"$http_user_agent" '; access_log /usr/local/nginx-0.8.32/logs/cache.log cache; expires 1d; } #用于清除缓存,假设一个URL为http://192.168.8.42/test.txt,通过访问http://192.168.8.42/purge/test.txt就可以清除该URL的缓存。 location ~ /purge(/.*) { #设置只允许指定的IP或IP段才可以清除URL缓存。 allow 127.0.0.1; allow 192.168.0.0/16; deny all; proxy_cache_purge cache_one $host$1$is_args$args; } #扩展名以.php、.jsp、.cgi结尾的动态应用程序不缓存。 location ~ .*\.(php|jsp|cgi)?$ { proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://192.168.0.146:8080; } access_log off; } server{ listen 8080; server_name 192.168.33.243; location / { root /usr/local/webapp; } access_log off; } } nginx 有好几个参数控制缓存,以nginx缓存图片文件作为例子。
第一,缓存池 这个参数控制缓存池的规模,以及与源服务器的交互频率。缓存淘汰是非常被动的,仅仅是为了维护缓存池的规模。 本例使用50M共享内存维护缓存文件列表,如果一个文件3天内不活跃,即没被人二次访问,则在缓存池中淘汰掉,在硬盘上缓存的文件总量最高为10G 。如果缓存池里的文件都是3天内的文件,且总量已经达到10G,那么此时缓存池的淘汰规则是 LRU –Last Recent Used(访问频率最低的被淘汰)。
第二,缓存的生命周期
这个参数直接控制缓存的生命周期,
第三,浏览器缓存的生命周期
1、客户使用浏览器第一次打开网页,服务器返回200,图片进入浏览器缓存,生命周期是7天 这三个参数,对于缓存服务器影响较大的是第一二个参数。
首先,我们应该维护一个尽可能大的缓存池,把面做广; 最后,如果是小范围的缓存,为了节省昂贵的磁盘IO,我们可以选择将缓存放在共享内存中。 (责任编辑:IT) |