使用nginx进行cache缓存
一、nginx cache配置
1、nginx.conf 主配置文件
这个基本按默认配置做的,如果是生产环境可以再加上只允许通过的域名访问,不允许的403或转到其他页。另外进程数和连接数也要做相应修改。
1worker_processes 1;
2events {
3 worker_connections 1024;
4}
5http {
6 include mime.types;
7 default_type application/octet-stream;
8 sendfile on;
9 keepalive_timeout 65;
10 log_format main '$remote_addr - $remote_user [$time_local] "$request" '
11 '$status $body_bytes_sent "$http_referer" '
12 '"$http_user_agent" "$http_x_forwarded_for"';
13 access_log logs/access.log main;
14#CDN Include
15 include proxy.conf;
16 include upstream.conf;
17 include www.361way.com.conf;
18 server {
19 listen 80;
20 server_name localhost;
21 error_page 500 502 503 504 /50x.html;
22 location = /50x.html {
23 root html;
24 }
25 }
26}
2、proxy.conf代理配置
我这里将反向代理cache缓存的配置放在这里了,这个配置上面是放到全局配置里了,其实也可以放到局部设置里。
1proxy_temp_path /data/cdn_cache/proxy_temp_dir;
2proxy_cache_path /data/cdn_cache/proxy_cache_dir levels=1:2 keys_zone=cache_one:50m inactive=1d max_size=1g;
3proxy_connect_timeout 5;
4proxy_read_timeout 60;
5proxy_send_timeout 5;
6proxy_buffer_size 16k;
7proxy_buffers 4 64k;
8proxy_busy_buffers_size 128k;
9proxy_temp_file_write_size 128k;
10proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_404;
3、upstream.conf配置
这个主要指向反向代理的真实应用的地址,如下:
1upstream www.361way.com
2{
3 server 192.168.56.102:80 weight=10 max_fails=3;
4}
4、虚拟主机www.361way.com.conf 配置
1server
2{
3 listen 80;
4 server_name www.361way.com;
5 access_log logs/www.361way.com-access.log main;
6 location ~ .*\.(gif|jpg|png|html|htm|css|js|ico|swf|pdf)$
7 {
8 #Proxy
9 proxy_redirect off;
10 proxy_next_upstream http_502 http_504 http_404 error timeout invalid_header;
11 proxy_set_header Host $host;
12 proxy_set_header X-real-ip $remote_addr;
13 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
14 proxy_pass https://blog.361way.com;
15 #Use Proxy Cache
16 proxy_cache cache_one;
17 proxy_cache_key "$host$request_uri";
18 add_header Cache "$upstream_cache_status";
19 proxy_cache_valid 200 304 301 302 8h;
20 proxy_cache_valid 404 1m;
21 proxy_cache_valid any 2d;
22 }
23 location /
24 {
25 proxy_redirect off;
26 proxy_next_upstream http_502 http_504 http_404 error timeout invalid_header;
27 proxy_set_header Host $host;
28 proxy_set_header X-real-ip $remote_addr;
29 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
30 proxy_pass https://blog.361way.com;
31 client_max_body_size 40m;
32 client_body_buffer_size 128k;
33 proxy_connect_timeout 60;
34 proxy_send_timeout 60;
35 proxy_read_timeout 60;
36 proxy_buffer_size 64k;
37 proxy_buffers 4 32k;
38 proxy_busy_buffers_size 64k;
39 }
40}
创建cache使用的目录: mkdir -p /data/cdn_cache
。 完成后,重启nginx服务,通过ps查看会发现多出来两个nginx cache相关的进程。
二、nginx cache的结果查看
再通过url访问,查看头文件,会出现第一次访问的时候响应头是MISS的,第二次访问的时候就变成HIT的了,即命中了。
同时,查看cache使用目录可以查看到访问的文件对象内容:
1# tree -A /data/cdn_cache/
2/data/cdn_cache/
3+-- proxy_cache_dir
4| +-- 9
5| | +-- a8
6| | +-- f28e02e3877f3826567907bcb0ebea89
7| +-- e
8| +-- 88
9| +-- 114250cf63938b2f9c60b2fb3e4bd88e
10+-- proxy_temp_dir
由于缓存使用的是md5sum加密,实际上对应的对象是可以查看对应缓存的位置的。如下:
1echo -n '192.168.56.101/index.html' |md5sum |awk '{print $1}'
2114250cf63938b2f9c60b2fb3e4bd88e
我们再看下proxy_cache_path /data/cdn_cache/proxy_cache_dir levels=1:2这个配置是很有意思的。其中的levels=1:2决定了cache对象存放的路径:
- 其中1表示MD5的最后一位。
- 其中2表示MD5的倒数第三位和第二位。
- 一个冒号表示一层。
比如下面的index.html,最后一位是e,倒数第三二位是88,所以其位置在e/88/下。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/nginx-cache-2/6005.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.