我正在尝试使用NGINX缓存本地静态资产。但是,NGINX不会缓存资产。资产已正确提供,但未写入缓存目录。此外,未设置与服务器端缓存相关的标头。
以下是我的NGINX配置:
proxy_cache_path /mnt/ramdisk levels=1:2 keys_zone=my_cache:10m;
server {
listen 80;
server_name _;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
ssl_certificate <snip>;
ssl_certificate_key <snip>;
location /public/ {
autoindex on;
root <snip>;
# browser cache
expires 2d;
add_header Cache-Control "public";
# server-side caching
add_header X-Proxy-Cache $upstream_cache_status;
proxy_ignore_headers "Set-Cookie";
proxy_cache my_cache;
proxy_cache_min_uses 1;
proxy_cache_valid 200 60m;
}
}
在此路径上请求资产时,我看到以下标头:
$ curl -I https://<my-domain>/public/img/lightbulb-lg.optimized.jpeg
HTTP/2 200
server: nginx/1.10.3
date: Tue, 02 Oct 2018 19:42:09 GMT
content-type: image/jpeg
content-length: 254851
last-modified: Fri, 28 Sep 2018 17:36:17 GMT
etag: "5bae6691-3e383"
expires: Thu, 04 Oct 2018 19:42:09 GMT
cache-control: max-age=172800
cache-control: public
accept-ranges: bytes
这正确地对应于expires
和add_header
伪指令,但请注意缺少X-Proxy-Cache
标头。
此外,目录/mnt/ramdisk
为空。其权限设置为drwxrwxrwt 2 www-data root 40 Oct 2 19:36 ramdisk
,并且我确认可以写入此目录。
这是怎么回事?