Django 使用别名的Nginx浏览器缓存

Django 使用别名的Nginx浏览器缓存,django,nginx,browser-cache,Django,Nginx,Browser Cache,我正在尝试使用Django在nginx上设置浏览器缓存。静态文件的my nginx配置文件的当前(工作)配置如下: server { listen 443 ssl; server_name SERVER; ssl_certificate /etc/ssl/CERT.pem; ssl_certificate_key /etc/ssl/KEY.key; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.

我正在尝试使用Django在nginx上设置浏览器缓存。静态文件的my nginx配置文件的当前(工作)配置如下:

server {

    listen   443 ssl;
    server_name SERVER;

    ssl_certificate     /etc/ssl/CERT.pem;
    ssl_certificate_key /etc/ssl/KEY.key;
    ssl_protocols       SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    client_max_body_size 4G;

    access_log /webapps/site/logs/nginx-access.log;
    error_log /webapps/site/logs/nginx-error.log;

    location /static/ {
        alias   /webapps/site/static/;
    }

    # other locations, etc.
}
我想建立一个规则,在浏览器中缓存图像等,以限制每页请求的数量(每页通常有100个左右的图像,但整个网站的图像是相同的)。我尝试添加以下规则的一些变体:

location ~* \.(css|js|gif|jpe?g|png)$ {
  expires 365d;
  add_header Pragma public;
  add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
然而,当我这样做时,我只得到404个错误(尽管配置文件签出并重新加载时没有错误)。我相信这与别名有关,但我不确定如何修复它


如有任何建议,将不胜感激

您缺少图像位置块的
root
指令。因此,nginx将在默认位置查找文件,该位置因安装而异,并且由于您很可能没有将文件放置在该位置,因此将出现404 not Found错误

它适用于
/static/
位置块,因为您定义了别名。但我怀疑别名只是两者的根。如果是这样,那就试试

server {

    listen   443 ssl;
    server_name SERVER;
    root /path/to/web/root/folder/;

    [...]

    # Your locations ... Most likely no need for alias in any.
}

您缺少图像位置块的
root
指令。因此,nginx将在默认位置查找文件,该位置因安装而异,并且由于您很可能没有将文件放置在该位置,因此将出现404 not Found错误

它适用于
/static/
位置块,因为您定义了别名。但我怀疑别名只是两者的根。如果是这样,那就试试

server {

    listen   443 ssl;
    server_name SERVER;
    root /path/to/web/root/folder/;

    [...]

    # Your locations ... Most likely no need for alias in any.
}

您缺少图像位置块的
root
指令。因此,nginx将在默认位置查找文件,该位置因安装而异,并且由于您很可能没有将文件放置在该位置,因此将出现404 not Found错误

它适用于
/static/
位置块,因为您定义了别名。但我怀疑别名只是两者的根。如果是这样,那就试试

server {

    listen   443 ssl;
    server_name SERVER;
    root /path/to/web/root/folder/;

    [...]

    # Your locations ... Most likely no need for alias in any.
}

您缺少图像位置块的
root
指令。因此,nginx将在默认位置查找文件,该位置因安装而异,并且由于您很可能没有将文件放置在该位置,因此将出现404 not Found错误

它适用于
/static/
位置块,因为您定义了别名。但我怀疑别名只是两者的根。如果是这样,那就试试

server {

    listen   443 ssl;
    server_name SERVER;
    root /path/to/web/root/folder/;

    [...]

    # Your locations ... Most likely no need for alias in any.
}