nginx 缓存无上游/后端

nginx 缓存无上游/后端

我知道,如果有后端,nginx 可以充当反向代理来缓存文件。

问题是,我已经使用 nginx 作为 Web 服务器,提供文件(静态和 php),我想知道 nginx 是否可以使用自己的文件充当 proxy_cache ?我知道如果我将 nginx 本身作为上游,它将无法工作。

经典的做法是:nginx => apache backend => cached_result

我想要的是:nginx => 相同的 nginx 实例 => cached_result

有可能吗?如果可以,怎么做?

答案1

假设需要缓存本地文件,我只需将以下配置添加到 nginx 框中,它似乎可以正常工作:

proxy_cache_path /data/nginx/cache keys_zone=one:128m;
server {
  listen 127.0.0.1:80;
  server_name _;
  root /usr/share/nginx/local;
  location / {
    autoindex on;
    allow all;
    satisfy any;
    try_files $uri $uri/ =404;
  }
}

server {
  listen ipv4.addr:443 ssl http2;
  listen [ipv6addr]:443 ssl http2;
  server_name _;
  root /usr/share/nginx/html;
  include /etc/nginx/ssl.conf;
  location /local/ {
    allow all;
    satisfy any;
    proxy_cache one;
    proxy_cache_key "$host$request_uri";
    proxy_cache_min_uses 1;
    proxy_cache_methods GET HEAD;
    proxy_pass http://127.0.0.1:80/;
  }
}

答案2

您确定需要对本地文件进行缓存吗?缓存的原因是:

Web 缓存位于客户端和“原始服务器”之间,保存其看到的所有内容的副本。如果客户端请求缓存中存储的内容,它会直接返回内容,而无需联系原始服务器。这提高了性能,因为 Web 缓存更接近客户端,并且更有效地利用了应用服务器,因为它们不必每次都从头开始生成页面。

Nginx 文档

也许您可以在同一个链接上使用proxy_cache指令示例,但我没有测试过

相关内容