2014-10-03 128 views
0

我试图设置与Django的nginx浏览器缓存。对静态文件我的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错误(尽管配置文件检查并重新加载没有错误)。我相信这与别名有关,但我不知道如何解决它。

任何建议,将不胜感激!

回答

3

您缺少图像位置块的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. 
} 
+0

这很好,谢谢! – user2030378 2014-10-06 16:19:00