nginx利用proxy_cache来缓存文件

nginx利用proxy_cache来缓存文件,有需要的朋友可参考

 代码如下 复制代码

user  zhangy users;
worker_processes 10;
error_log  /var/vlogs/nginx_error.log  crit;
pid        /var/vlogs/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
events
{
 use epoll;
 worker_connections 65535;
}
http
{
 include       mime.types;
 default_type  application/octet-stream;
 #charset  gb2312;
 server_names_hash_bucket_size 128;
 client_header_buffer_size 32k;
 large_client_header_buffers 4 32k;
 client_max_body_size 8m;
 sendfile on;
 tcp_nopush     on;
 keepalive_timeout 60;

tcp_nodelay on;

fastcgi_connect_timeout 300;
 fastcgi_send_timeout 300;
 fastcgi_read_timeout 300;
 fastcgi_buffer_size 64k;
 fastcgi_buffers 4 64k;
 fastcgi_busy_buffers_size 128k;
 fastcgi_temp_file_write_size 128k;
//============
 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;
 proxy_temp_path   /usr/local/nginx/proxy_temp;
/*levels设置目录层次
keys_zone设置缓存名字和共享内存大小
inactive在指定时间内没人访问则被删除在这里是1天
max_size最大缓存空间*/
proxy_cache_path /usr/local/nginx/proxy_cache levels=1:2 keys_zone=content:20m inactive=1d max_size=100m;
//============等号中间要加的,关键只要加上proxy_cache_path

gzip on;
 gzip_min_length  1k;
 gzip_buffers     4 16k;
 gzip_http_version 1.0;
 gzip_comp_level 2;
 gzip_types       text/plain application/x-javascript text/css application/xml;
 gzip_vary on;

upstream myselfxtajmd {
 server 127.0.0.1:10002;
 server 127.0.0.1:10001 weight=5;
 }

server
 {
 listen       10000;
 server_name  localhost;
 index index.html index.htm index.php;
 log_format  access  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
 ‘$status $body_bytes_sent "$http_referer" ‘
 ‘"$http_user_agent" $http_x_forwarded_for‘;
 access_log  /var/log/test.log  access;

location /
 {
 proxy_cache content; //根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_pass http://myselfxtajmd;
 proxy_redirect                      off;
 proxy_set_header   Host             $host;
 proxy_set_header   X-Real-IP        $remote_addr;
 proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
 }

//动态的放过
 location ~ .*.(php|jsp|cgi)?$
 {
 proxy_set_header Host  $host;
 proxy_set_header X-Forwarded-For  $remote_addr;
 proxy_pass http://myselfxtajmd;
 }
 }
}

上面只是配置的部分内容,反向代理的那部分没有放进去了,参考linux下nginx反向代理,实现负载均衡,当我们浏览http://localhost:10000/222.jpg时,在代理端就把图片缓存了,不用到代理终端去缓存了,可以节省资源。缓存的内容放在你设置的proxy_cache_path路径下面,看下图

nginx proxy_cache
第一层目录只有一个字符,是由levels=1:2设置,总共二层目录,子目录名字由二个字符组成。突然发现,我在我的系统里面,配置过varnish,squid,apache和mod_cache,nginx和proxy_cache,他们都是可以对文件进行缓存,不知道他们哪一个对文件的缓存效果最好呢?有空比较一下,对了这4种缓存,这个博客里面都有的,有兴趣的朋友,可以看一下

时间: 2024-08-10 02:11:35

nginx利用proxy_cache来缓存文件的相关文章

使用Nginx的proxy_cache缓存功能取代Squid[原创]

使用Nginx的proxy_cache缓存功能取代Squid[原创] [文章作者:张宴 本文版本:v1.2 最后修改:2009.01.12 转载请注明原文链接:http://blog.zyan.cc/nginx_cache/] Nginx从0.7.48版本开始,支持了类似Squid的缓存功能.这个缓存是把URL及相关组合当作Key,用md5编码哈希后保存在硬盘上,所以它可以支持任意URL链接,同时也支持404/301/302这样的非200状态码.虽然目前官方的Nginx Web缓存服务只能为指定

nginx的proxy_cache缓存相关配置

本文主要介绍nginx的proxy_cache缓存的配置及nginx平滑升级. nginx的proxy_cache缓存用于反向代理时,对后端内容资源服务器进行缓存,缓存静态资源. 一.proxy_cache相关指令说明 1.proxy_cache指令 语法:proxy_cache zone_name; 默认值:none 使用配置段:http,server,location 该指令用于设置哪个缓存区将被使用,zone_name的值为proxy_cache_path指令创建的缓存区名称 2.prox

nginx利用geo模块做限速白名单以及geo实现全局负载均衡的操作记录

geo指令使用ngx_http_geo_module模块提供的.默认情况下,nginx有加载这个模块,除非人为的 --without-http_geo_module.ngx_http_geo_module模块可以用来创建变量,其值依赖于客户端IP地址.geo指令语法: geo [$address] $variable { ... }默认值: -配置段: http定义从指定的变量获取客户端的IP地址.默认情况下,nginx从$remote_addr变量取得客户端IP地址,但也可以从其他变量获得.例

Nginx利用lua剪辑FastDFS图片

Nginx利用lua剪辑FastDFS中的图片 我们经常用FastDFS来做图片服务器,通过nginx来上传或者获取图片.本文要实现的功能是,当客户点要获取不同尺寸的图片是,lua根据url中的尺寸大小调用GraphicsMagick 的gm命令来剪辑图片. 1.软件准备: GraphicsMagick-1.3.21.tar.gz LuaJIT-2.0.2.tar.gz nginx-1.4.2.tar.gz ngx_devel_kit-0.2.18.tar.gz v0.8.6.tar.gz(lu

nginx利用location匹配url中?号后的参数

nginx利用location匹配url中?号后的参数 http://www.baidu.com/index.php?a=1&b=2location能匹配到url,但是匹配不到url后面的参数,例如:?a=1&b=2 需求:访问地址:https://www.aposoft.com/all-apowersoft/?from=edm 开发要求可不可以只是这个完整地址https://www.aposoft.com/all-apowersoft/?from=edm 跳转到404,然后https:/

nginx利用lua实现nginx反向代理proxy_store缓存文件自删除

因为自己网站526net一直放在国外,速度一直不怎么理想.所以网站前端一直是买一些低配廉价,但是对国内线路友好的机器来做反向代理. nginx的反向代理可以说已经很好用了,我一直使用proxy_store方式来做缓存,唯一的缺点就是不会自动清理缓存.我是通过定时任务自动删除的. 但是还是做不到我要的效果,前两天使用lua写了脚本,实现客户访问前端,lua判断文件的创建时间,然后根据设定的时间来自动删除缓存. nginx 的设置我就不多说了,lua的安装可以参考 <LNMP平滑升级nginx并安装

Nginx+Keepalived+Proxy_Cache 配置高可用集群和高速缓存

环境: CentOS release 6.5 x86_64    192.168.100.90 CentOS release 6.5 x86_64    192.168.100.91 在主备服务器上部署Nginx 下载 #wget http://nginx.org/download/nginx-1.6.3.tar.gz #  wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz 安装 # yum install gcc ope

使用nginx的proxy_cache做网站缓存

为什么要做web cache,我想大家最主要的是解决流量的压力.随着网站流量的提升,如果只是单台机器既处理静态文件,又处理动态脚本,显然效率很难上升,不能处理日益上涨的流量压力.与此同时某些网站的页面内容并不是经常变化,因此我们可以分两层架构来组织网站.前端web缓存+后端web服务器,可以参看这里配置nginx反向代理配置 前端web缓存有多重方式实现,原理就是队请求结果页面静态化并设置一个超时期限,缓存页面过期后,新请求到达时重新到后端web服务器获取内容更新:没有nginx前比较流行的方法

nginx+ keepalived+proxy_cache实现nginx高可用及高速缓存

环境: master: 10.10.0.224 slave: 10.10.0.225 real server 1: 10.10.0.221 real server 2: 10.10.0.226 vip: 10.10.0.220 real server 事先安装好web服务 # yum install httpd -y # cd /var/www/html # touch test.html # echo "10.10.0.221" > test.html    # real se