![从 NGINX 缓存提供服务时转发请求-这可能吗?](https://linux22.com/image/755854/%E4%BB%8E%20NGINX%20%E7%BC%93%E5%AD%98%E6%8F%90%E4%BE%9B%E6%9C%8D%E5%8A%A1%E6%97%B6%E8%BD%AC%E5%8F%91%E8%AF%B7%E6%B1%82-%E8%BF%99%E5%8F%AF%E8%83%BD%E5%90%97%EF%BC%9F.png)
我已启用 Nginx 缓存。我遵循官方文档一切运行正常。当请求首次到达时,它会通过代理传递到服务器。响应会被缓存。
从那时起,所有请求都由 Nginx 缓存提供,直到缓存过期。但我想要一个额外的东西。
这是我想要的:
- 当请求从缓存中得到满足时,我想向我的服务器发出 API 请求,这样我就不会丢失点击次数(计数器)
我怎样才能做到这一点?
我尝试过该mirror
命令,但当页面从缓存中提供时,它不会被调用。只有当缓存过期时才会调用它。这是我尝试的配置快照。这可能吗?还有其他方法吗?
编辑 缓存指令如第二张屏幕截图所示。
答案1
这似乎是不可能的。该mirror
指令作为原始请求的子请求进行处理,因此如果 nginx 不处理原始请求,则镜像请求也不会被处理。
作为一种解决方法,您可以添加第二个自定义access_log
指令,该指令使用自定义log_format
。然后,您的程序可以读取此日志来确定缓存命中的时间和网址。事实上,它可以使用该日志来计算所有命中,无论是否缓存。