Nginx系列(十四. nginx缓存)

本文详细介绍了Nginx中代理模块与fastcgi模块的缓存配置方法,包括配置文件示例、缓存策略及关键参数说明。通过具体实例展示了如何设置缓存路径、缓存大小、缓存有效性等,帮助读者理解并掌握Nginx缓存机制。
摘要由CSDN通过智能技术生成

一.代理模块缓存

1.配置文件

#注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区
proxy_temp_path /web/tmp/nginx;
#设置Web缓存区名称为cache_one,内存缓存空间大小为100MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为1GB。
proxy_cache_path /web/cache/nginx levels=1:2 keys_zone=cache_one:100m inactive=1d max_size=1g;
location / {
            #如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
            proxy_next_upstream http_502 http_504 error timeout invalid_header;
            proxy_cache cache_one;
            #对不同的HTTP状态码设置不同的缓存时间
            proxy_cache_valid 200 304 1h;
            #以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内
            proxy_cache_key $host$uri$is_args$args;
            proxy_pass http://webserver;
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

反向代理的缓存功能是一个重定向,不是根据url生成缓存静态文件的功能

二.fastcgi模块缓存

1.配置文件

fastcgi_temp_path /web/tmp/fastcgi;
#设置fastcgi缓存路径 levels代表目录层级,1:2会生成16*256,2:2会生成256*256 keys_zone代表缓冲区名称 inactive代表过期时间 max_size代表最多用多少磁盘空间
fastcgi_cache_path /web/cache/fastcgi levels=1:2 keys_zone=cache_two:100m inactive=1d max_size=1g;
location ~ [^/]\.php(/|$) {
            fastcgi_cache cache_two;
            fastcgi_cache_valid 200 10m;
            fastcgi_cache_methods GET HEAD;
            #忽视以下头信息
            fastcgi_ignore_headers "Cache-Control" "Expires" "Set-Cookie";
            fastcgi_cache_key "$scheme$request_method$host$request_uri";
            #添加状态头信息
            add_header X-Cache-CFC "$upstream_cache_status - $upstream_response_time";

            fastcgi_index index.php;
            fastcgi_pass 127.0.0.1:9000;
            include      fastcgi_params;

            fastcgi_split_path_info ^(.+?\.php)(/.*)$;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param SCRIPT_NAME $fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        }   

注意:
1.如果fastcgi响应的头信息里有Expires Cache-Control Set-Cookie的时候,fastcgi_cache是不起作用的,所以需要把fastcgi_ignore_headers这个配置项加上。

2.添加头信息X-Cache-CFC 是为了测试缓存是否起作用,$upstream_cache_status包含以下几个状态:
MISS 未命中,请求被传送到后端
HIT 缓存命中
EXPIRED 缓存已经过期请求被传送到后端
UPDATING 正在更新缓存,将使用旧的应答
STALE 后端将得到过期的应答
BYPASS 缓存被绕过了

三.参考

http://www.qttc.net/201307355.html
https://serversforhackers.com/nginx-caching/
http://www.ha97.com/5194.html
http://www.cnxct.com/several-reminder-in-nginx-fastcgi_cache-and-php-session_cache_limiter/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值