用Nginx反向代理其它服务器,有些静态资源可以直接缓存,没必要再次去查询一遍,减少后端请求的同时加快响应时间。
简介
-
Nginx的Web缓存服务主要由
proxy_cache
相关指令集和fastcgi_cache
相关指令集构成。
1)proxy_cache
相关指令集用于反向代理时,对后端内容源服务器进行缓存
2)fastcgi
相关指令集主要用于对FastCGI的动态程序进行缓存 -
proxy_cache和fastcgi_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