NiceLeeのBlog 用爱发电 bilibili~

Nginx 内置缓存Proxy_cache

2018-12-16
nIceLee

阅读:


用Nginx反向代理其它服务器,有些静态资源可以直接缓存,没必要再次去查询一遍,减少后端请求的同时加快响应时间。

简介

  • Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关指令集构成。
    1) proxy_cache相关指令集用于反向代理时,对后端内容源服务器进行缓存
    2) fastcgi相关指令集主要用于对FastCGI的动态程序进行缓存

  • proxy_cachefastcgi_cache构成了Nginx的缓存,proxy_cache主要用于反向代理时,对后端内容源服务器进行缓存,fastcgi_cache主要用于对FastCGI的动态程序进行缓存。两者的功能基本上一样。
    -> proxy_cache的作用是缓存后端服务器的内容,可能是任何内容,包括静态的和动态。
    -> proxy_cache缓存减少了nginx与后端通信的次数,节省了传输时间和后端宽带。
    -> fastcgi_cache的作用是缓存fastcgi生成的内容,很多情况是php生成的动态的内容。
    -> fastcgi_cache缓存减少了nginx与php的通信的次数。

  • 以下就proxy_cache做详细讲解,fastcgi_cache类似,可根据需要查看。

http 模块缓存设置

缓存到磁盘

#要想开启nginx的缓存功能,需要添加此处的两行内容!
#设置Web缓存区名称为cache_one,内存缓存空间大小为100M,缓存的数据超过1天没有被访问就自动清除;访问的缓存数据,硬盘缓存空间大小为1G
proxy_cache_path /usr/nginx/proxy_cache_path levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=1g;
 
#创建缓存的时候可能生成一些临时文件存放的位置
proxy_temp_path /usr/nginx/proxy_temp_path;

#proxy_ignore_headers 不处理后端服务器返回的指定响应头,禁止处理来自代理服务器的应答
proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;

缓存到内存

缓存到内存(/dev/shm),可以提高访问速度,但重启失效,需要重新mount。

mkdir /dev/shm/proxy_temp 
mkdir /dev/shm/proxy_cache
chmod -R 777 /dev/shm/proxy*
mkdir /mnt/nginx_temp /mnt/nginx_cache
mount –bind /dev/shm/proxy_temp /mnt/nginx_temp 
mount –bind /dev/shm/proxy_cache /mnt/nginx_cache

http 具体配置:

proxy_temp_path /mnt/nginx_temp;
proxy_cache_path /mnt/nginx_cache levels=1:2 keys_zone=cache_one:200m inactive=5d max_size=400m;
proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie;

location 模块缓存设置

#缓存静态文件
location ~ .*\.(html|htm|css|js|ico|jpeg|git|jpg|png|bmp|swf)$ {
    root /home/www;
    proxy_pass http://127.0.0.1:8080;
    proxy_cookie_path /test/ /;
    proxy_set_header Host  $host;
    proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP  $remote_addr;

    proxy_cache content;
    proxy_cache_valid  200 304 301 302 10d;
    proxy_cache_valid  any 1d;
    proxy_cache_key $host$uri$is_args$args;
}

相关参数:
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的值

参考链接

http://www.cnblogs.com/kevingrace/p/6198287.html
https://blog.csdn.net/tshangshi/article/details/51884279


内容
隐藏