Nginx本地静态资产的服务器端缓存

时间:2018-10-02 19:43:52

标签: nginx caching

我正在尝试使用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

这正确地对应于expiresadd_header伪指令,但请注意缺少X-Proxy-Cache标头。

此外,目录/mnt/ramdisk为空。其权限设置为drwxrwxrwt 2 www-data root 40 Oct 2 19:36 ramdisk,并且我确认可以写入此目录。

这是怎么回事?

0 个答案:

没有答案