nginx的proxy模块 可以实现类似于Squid的缓存功能,HTTP的缓存与文件系统或者块设备的缓存还有所不同,文件系统或者块设备的缓存可以使用预取方法做优化,提前预取出将要被访问的部分,但是HTTP的缓存却无法预知文件的访问情形。
可以在nginx里面实现动态页面的静态化工作。用户第一次访问index.php页面,由于nginx的缓存中没有,会访问相应的文件,第二次再访问index.php的时候,由于已经缓存在了nginx的proxy_cache中,Nginx当接收到请求之后就不会将请求传送到upstream服务器里面了。
具体的配置方法如下:
在http域内添加如下参数
-
proxy_temp_path /usr/local/nginx/sy;
-
proxy_cache_path /usr/local/nginx/proxy_cache levels=1:2 keys_zone=cache_zone:20m inactive=1d max_size=100m;
在location里面使用proxy_cache,
配置方法如下:
-
location ~* \.php$ {
-
proxy_cache cache_zone;
-
proxy_cache_key $host$uri$is_args$args;
-
proxy_cache_valid any 1d;
-
proxy_pass
-
}
这里面设置proxy_cache_key挺有意思的,他会根据这个key映射成一个hash值,然后存入到本地文件中,如果你设置的proxy_cache_key为$host$uri 那么无论后面跟的什么参数,都会访问一个文件,不会再生成新的文件。
而如果proxy_cache_key设置了$is_args$args,那么传入的参数 localhost/index.php?a=4 与localhost/index.php?a=44将映射成两个不同hash值的文件。
在系统中查看相应的文件:
阅读(586) | 评论(0) | 转发(0) |