当前位置: 首页 > 面试题库 >

Nginx作为缓存代理不缓存任何内容

谭研
2023-03-14
问题内容

我正在尝试缓存静态内容,这些内容基本上位于虚拟服务器配置中的以下路径内。由于某些原因,文件没有被缓存。我在缓存目录中看到了几个文件夹和文件,但总是像20mb一样高或低。例如,如果要缓存图像,则将至少占用500mb的空间。

这是nginx.conf缓存部分:

** nginx.conf **
proxy_cache_path /usr/share/nginx/www/cache levels=1:2 keys_zone=static$
proxy_temp_path /usr/share/nginx/www/tmp;
proxy_read_timeout 300s;

这是默认的虚拟服务器。

**sites-available/default**
server {
    listen   80;

    root /usr/share/nginx/www;
    server_name myserver;
    access_log /var/log/nginx/myserver.log main;
    error_log /var/log/nginx/error.log;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    location ~* ^/(thumbs|images|css|js|pubimg)/(.*)$ {
            proxy_pass http://backend;
            proxy_cache static;
            proxy_cache_min_uses 1;
            proxy_cache_valid 200 301 302 120m;
            proxy_cache_valid 404 1m;
            expires max;
    }

    location / {
            proxy_pass http://backend;
    }
}

问题答案:

确保您的后端不返回Set-Cookie标头。如果Nginx看到它,它将禁用缓存。

如果是这种情况,最好的选择是修复后端。如果无法固定后端,则可以指示Nginx忽略Set-Cookie标头

proxy_ignore_headers "Set-Cookie";
proxy_hide_header "Set-Cookie";

请参阅说明文件

proxy_ignore_header将确保进行缓存。proxy_hide_header将确保Cookie有效负载不包含在缓存的有效负载中。重要的是要避免通过NGINX缓存泄漏cookie。



 类似资料:
  • 主要内容:1. 介绍,2. 启用响应缓存,3. 涉及缓存的NGINX进程,4. 指定要缓存的请求,5. 限制或绕过缓存,6. 从缓存中清除内容,7. 字节缓存,8. 组合配置示例本节介绍如何启用和配置从代理服务器接收的响应的缓存。主要涉及以下内容 - 缓存介绍 启用响应缓存 涉及缓存的NGINX进程 指定要缓存的请求 限制或绕过缓存 从缓存中清除内容 配置缓存清除 发送清除命令 限制访问清除命令 从缓存中完全删除文件 缓存清除配置示例 字节缓存 组合配置示例 1. 介绍 当启用缓存时,NGINX

  • 让NGINX缓存使用proxy_pass命令从Dropbox中提取的缩略图时遇到问题。在运行NGINX的同一台服务器上,我多次运行以下命令 每次使用X-Cache都会得到完全相同的响应:MISS HTTP/1.1 200 OK Server:nginx/1.1.19日期:Wed,2015年3月25日20:05:36 GMT内容类型:image/jpeg内容长度:1691连接:keep alive

  • 我使用的是spring-boot-starter-parent版本2.0.1 这是我想要缓存结果的java方法。 我没有redis或缓存的任何其他配置。虽然它不抛出任何错误,但它不缓存任何东西。我和Redis-Cli核实了。

  • 给出了一个带有express的nodejs应用程序,它通过nginx运行。我正在尝试使用ETag添加缓存支持。 如果没有nginx,如果应用程序被直接调用它的工作。我设置了如果无匹配头,并收到一个304。 对于nginx,响应总是200。 我的Nginx配置: 快车的日志记录。 信息:HTTP GET/app/statusCode=200,url=/app/,connection=upgrade,

  • 是否有可能在内存中实现缓存以避免完全堆消耗? 我的spring boot java应用程序使用内存缓存,过期策略设置为1小时(咖啡因库用于缓存目的)。在此之后,所有缓存实例都处于旧代,需要收集完整的GC。现在,当XMX设置为10GB时,我可以看到经过几个小时的测试,我的缓存包含大约100k个实例,但在heap中(正好是旧一代),我可以找到数百万个缓存对象的实例。是否有可能在内存中使用缓存并避免这种

  • 我已经在一台主机上安装了一个带有NGINX的Ubuntu实例,并将其配置为另一台主机上我的应用程序的转发代理。我的应用程序正在向NGINX发出GET请求,NGINX正在向外部服务器发出另一个GET请求(请求中指定了指向此服务器的URL),并将响应返回给应用程序。NGINX应该缓存来自外部服务器的响应。我需要尊重响应中的缓存控制头(缓存该头所说的响应),但是!当响应中没有缓存控制头时,必须缓存12小