Django 使用别名的Nginx浏览器缓存
我正在尝试使用Django在nginx上设置浏览器缓存。静态文件的my 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.
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.
}