我试图caching基本上在下面的path在虚拟服务器configuration中的静态内容。 由于某些原因文件没有被caching。 我看到caching目录中的几个文件夹和文件,但它总是像20MB不高不低。 如果是caching图片,例如至less需要500mb的空间。
这里是nginx.confcaching部分:
** 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非常重要。
我想补充一点,多个配置选项和组合可以在Nginx中禁用代理缓存。 不幸的是,这是记录不完善。
在我的配置中,我设置了proxy_buffering on
并按预期启用了缓存。
对于它的价值,我的经验是,nginx并不总是缓存你告诉它的东西。
例如,在centos7上,使用配置选项
proxy_cache_path /tmp/my_nginx_cache levels=1:2 keys_zone=my_zone:10m inactive=24h max_size=1g;
nginx实际上缓存文件在:
/tmp/systemd-private-phJlfG/tmp/my_nginx_cache
经过多个答案和评论后,我发现这个配置终于起作用了:
10m = 10MB密钥缓存,max_size为2GB,inactive = 120m(120分钟后从源刷新),use_temp_path = off(减少IO)
proxy_cache_valid – 缓存状态200和302 60分钟
proxy_cache_path /tmp/cache levels=1:2 keys_zone=default_cache:10m max_size=2g inactive=120m use_temp_path=off; proxy_cache_key "$scheme$request_method$host$request_uri"; proxy_cache_valid 200 302 60m; server { listen 80; server_name example.com; # https://www.nginx.com/blog/nginx-caching-guide location / { proxy_cache default_cache; proxy_buffering on; proxy_ignore_headers Expires; proxy_ignore_headers X-Accel-Expires; proxy_ignore_headers Cache-Control; proxy_ignore_headers Set-Cookie; proxy_hide_header X-Accel-Expires; proxy_hide_header Expires; proxy_hide_header Cache-Control; proxy_hide_header Pragma; add_header X-Proxy-Cache $upstream_cache_status; proxy_pass http://ip-of-host:80; #set $memcached_key "$uri?$args"; #memcached_pass 127.0.0.1:11211; # error_page 404 502 504 = @fallback; } }