本文共 2842 字,大约阅读时间需要 9 分钟。
Nginx实现缓存功能 缓存数据分为两部分(索引,数据): 1、存储数据的索引,存放在内存中; 2、存储缓存数据,存放在磁盘空间中; Nginx实现缓存是通过代理缓存pxory_cache 模块 ngx_http_proxy_module模块 常用的选项有 proxy_cache_path 说明 proxy_cache_path定义一个完整的缓存空间 指定缓存数据的磁盘路径、索引存放的内存空间以及一些其他参数,如缓存删除策略。 注意,该选项只能定义在http块上下文中。 例 proxy_cache_path /data/cache levels=1:2 keys_zone=web:10m max_size=1G inactive=10; 缓存数据存储在/data/cache目录中; 选项 levels 配置在该目录下再分两层目录,一层1个随机字符作为名称,二层2个随机字符作为名称,levels最多三层,每层最多两个字符,这是为了加快访问文件的速度;最后使用代理url的哈希值作为关键字与文件名,一个缓存数据如下:/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c; keys_zone 用来为这个缓存区起名,并设置大小。 指定名称为web,这个名称后面proxy_cache需要引用 而10m就是内存空间的大小; max_size 指定最大缓存数据磁盘空间的大小; inactive 在inactive指定的时间内,未被访问的缓存数据将从缓存中删除。 proxy_cache proxy_cache用来引用上面proxy_cache_path定义的缓存空间,现时打开缓存功能 例: proxy_cache web; #引用上面定义上的缓存空间,同一缓存空间可以在几个地方使用 proxy_cache_valid proxy_cache_valid设置不同响应代码的缓存时间 例 proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m;
三个步骤:新建缓存、打开缓存、缓存设置
如果要缓存整个页面,需要在代码中进行设置/usr/local/tenginx/conf]$ cat nginx.conf# For more information on configuration, see:# * Official English Documentation: http://nginx.org/en/docs/# * Official Russian Documentation: http://nginx.org/ru/docs/user nginx;worker_processes auto;error_log /var/log/nginx/error.log;pid /run/nginx.pid;# Load dynamic modules. See /usr/share/nginx/README.dynamic.include ../modules/*.conf;events { worker_connections 1024;}http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include mime.types; default_type application/octet-stream; #新建缓存 proxy_cache_path /data/cache levels=1:2 keys_zone=nginx:20M max_size=2G inactive=5; #为缓存数据添加头部信息 add_header muzigan-Cache "$upstream_cache_status form $server_addr"; upstream static_server { server 192.168.17.175:80 weight=5; server 192.168.17.176:80 weight=3; check interval=3000 rise=2 fall=5 timeout=2000 type=http; check_http_expect_alive http_2xx http_3xx; } server { listen 80 default_server; server_name _; location ~ ^/images { index index.php index.html; proxy_pass http://static_server; #开启缓存 proxy_cache nginx; #缓存设置 proxy_cache_valid 200 301 302 2m; } }}