浏览 1.2k
在配置缓存的时候,第一次我没有配置proxy_cache_valid,结果发现本地没有生产缓存文件。每次请求都需要从上游服务器获得。
配置了proxy_cache_valid any 30m;以后问题得到解决。
请问,1, 这个proxy_cache_valid指令是用来做什么的?为什么不使用这条指令nginx不生产缓存文件?
2 , 这条指令后面的时间参数是用来控制什么的? 和proxy_cache_path中的invalid参数有什么不同?
多谢!
按点赞数排序
按时间排序
proxy_cache_valid用来匹配上游HTTP响应是否使用缓存的2个条件:
1、HTTP响应码,比如是否缓存404响应;
2、当上游响应中未携带cache-control、expires头部时,缓存将使用它后面的时间作为过期时间。
proxy_cache_path定义的淘汰时间,即到达后立刻删除,而过期时间只是资源过期,缓存不会立刻删除。
0
回答于2021-01-07 15:47
多谢陶老师,那么当上游响应中携带了cache-control、expires等头部时,不使用proxy_cache_valid指令NGINX也会保存缓存文件,对吗?
0
回答于2021-01-07 08:21
src/os/unix/ngx_files.c:404:9: error: 'pwritev' is only available on macOS 11.0 or newer [-Werror,-Wunguarded-availability-new]
n = pwritev(file->fd, vec->iovs, vec->count, offset);
^~~~~~~
error: 'pwritev' is only available on macOS 11.0 or newer [
是不是你的macos版本太低了?
rewrite_by_lua工作在rewrite阶段,只是改写uri,balancer_by_lua是在content阶段,在upstream流程里选择上游服务器,后者更灵活,可以自定义负载均衡算法,指定每个peer