我们大多数人都熟悉 Nginx——它是一个非常流行的 Web 服务器和反向代理。但是您知道您也可以将它用作缓存代理吗?
现在,您可能想知道为什么有人想做这样的事情——您不能更新您的服务以在 Redis 或 Memcached 中缓存数据吗?将缓存外部化到服务之外的单独层有什么好处?
以下是一些可能有用的场景:
- 即使您的服务出现故障,您也希望提供缓存数据
- 当您的服务响应时间过长时,您希望提供缓存数据
- 当负载很大时,您想保护您的服务
- 您有一个遗留系统,您希望使其更加可靠和高性能,但您无法更改代码
- 您想让外部 3rd 方服务更可靠、更高效
- 您正在使用多语言 微服务 架构 并想要一种缓存请求的标准方式
现在您已经感兴趣了,让我们一步一步地完成实现。
简单实现
events { worker_connections 1024; } http { + proxy_cache_path /<b>var</b>/cache/nginx keys_zone=my_cache:10m; server { listen 3000; + proxy_cache my_cache; location / { proxy_set_header Host $host; proxy_pass http:<font><i>//my-back