Nginx 浏览器使用别名进行缓存

2023-12-09

我正在尝试使用 Django 在 nginx 上设置浏览器缓存。我的 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/location 块,因为您定义了别名。但我怀疑别名应该是两者的根。如果是这样,那么尝试...

server {

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

    [...]

    # Your locations ... Most likely no need for alias in any.
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx 浏览器使用别名进行缓存 的相关文章

随机推荐