当前位置: 首页 > 知识库问答 >
问题:

为什么我的Nginx配置不缓存响应?

赵昊阳
2023-03-14

我有以下Nginx配置,我们可以从Nginx-T的输出中看到,它在语法上是正确的。我在下面的输出中加粗了一些相关部分:

$ sudo nginx -T
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# configuration file /etc/nginx/nginx.conf:
events {}

http {
    proxy_cache_path /tmp/cache keys_zone=one:10m levels=1:2 inactive=2M max_size=100g;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    # Static file server
    server {
        listen 127.0.0.1:8080;

        root /opt/nginx-test-data;

        location / {
        }
    }

    # Reverse proxy that talks to server defined above
    server {
        listen 127.0.0.1:8081;
        proxy_cache_min_uses 1;

        location / {
            proxy_pass http://127.0.0.1:8080;
            proxy_cache one;
        }
    }
}

我知道在正常实践中,服务器和代理服务器在不同的主机上。目前,我只是试图学习如何配置Nginx代理服务器与内容缓存,因为Nginx对我来说是新的。

我有以下2MB随机字节文件:

$ ls -lh /opt/nginx-test-data/random.bin 
-rw-rw-r-- 1 shane shane 2.0M Jun 21 11:39 /opt/nginx-test-data/random.bin

当我卷曲反向代理服务器时,我得到一个200的响应:

$ curl --no-progress-meter -D - http://localhost:8081/random.bin --output local-random.bin
HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Mon, 21 Jun 2021 15:50:07 GMT
Content-Type: text/plain
Content-Length: 2000000
Connection: keep-alive
Last-Modified: Mon, 21 Jun 2021 15:39:54 GMT
ETag: "60d0b2ca-1e8480"
Accept-Ranges: bytes

但是,我的缓存目录为空:

$ sudo ls -a /tmp/cache/
.  ..

我检查了/var/log/nginx/access.log/var/log/nginx/error.log,没有记录错误。

在向反向代理服务器发出请求后,我做错了什么,导致缓存目录中没有条目?

共有1个答案

欧浩淼
2023-03-14

事实证明,我需要添加一个proxy\u cache\u valid指令(尽管我不清楚为什么需要这样做-我假设只要在位置使用proxy\u cache\u valid就可以自己打开缓存)。

我的nginx。conf有效(请注意粗体新行):


events {}

http {
    proxy_cache_path /tmp/cache keys_zone=one:10m levels=1:2 inactive=2M max_size=100g;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    # Static file server
    server {
        listen 127.0.0.1:8080;

        root /opt/nginx-test-data;

        location / {
        }
    }

    # Reverse proxy that talks to server defined above
    server {
        listen 127.0.0.1:8081;
        proxy_cache_min_uses 1;

        location / {
            proxy_pass http://127.0.0.1:8080;
            proxy_cache one;
            proxy_cache_valid 200 10m;
        }
    }
}

 类似资料:
  • 不管我怎么努力,页面都被缓存了。因此,php函数运行一次后,总是显示缓存的结果,直到您按下Shift F5 > 我禁用了奥普卡什(在 phpinfo()上不再有奥普卡切了) 我禁用了APC(phpinfo()上不再有APC) 我使用了标题 Cache-Control:no-store,no-cache,必须重新验证"); // HTTP/1.1标头(Cache-Control:post-check

  • 本文向大家介绍基于Nginx的Mencached缓存配置详解,包括了基于Nginx的Mencached缓存配置详解的使用技巧和注意事项,需要的朋友参考一下 简介 memcached是一套分布式的高速缓存系统,memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙后。memcached的API使用三十二比特的循环冗余校验(CRC-32)计算键值后,将数据分散在不同的

  • 1. Nginx中的缓存介绍 由于 Nginx 是在网站的所有其他后台服务的最前线,它接收的请求和流量是后台服务的数倍甚至数十倍之多。因此,用好 Nginx 的缓存功能对于大型网站而言至关重要。Nginx 中的缓存功能优势如下: 提升所有客户端体验 有效降低上游服务器的负载 减少上游服务器之间的流量消耗 Nginx 的 Web 缓存服务主要由 proxy_cache 相关指令集和 fastcgi_

  • 问题内容: 我在Java 6的String源代码中注意到,hashCode仅缓存除0以外的值。以下代码段显示了性能差异: 在ideone.com中运行此命令可获得以下输出: 所以我的问题是: 为什么String的hashCode()不缓存0? Java字符串哈希为0的概率是多少? 避免对于每次哈希值都为0的字符串每次都重新计算哈希值的性能损失的最佳方法是什么? 这是缓存值的最佳实践方法吗?(即除了

  • 缓存的配置在configs/cache目录,目前支持三种缓存,文件缓存(FileCache), memcache缓存(MemoCache), redis缓存(RedisCache). 文件缓存的配置在file.config.php, 只有一个参数 "cache_dir", 表示文件缓存的根目录 memcache缓存配置在memo.config.php, 可以添加多个memcache服务器,配置格式

  • 问题内容: 我正在尝试缓存静态内容,这些内容基本上位于虚拟服务器配置中的以下路径内。由于某些原因,文件没有被缓存。我在缓存目录中看到了几个文件夹和文件,但总是像20mb一样高或低。例如,如果要缓存图像,则将至少占用500mb的空间。 这是nginx.conf缓存部分: 这是默认的虚拟服务器。 问题答案: 确保您的后端不返回标头。如果Nginx看到它,它将禁用缓存。 如果是这种情况,最好的选择是修复