带有别名的Nginx浏览器caching

我试图用Django在nginx上设置浏览器caching。 我的nginxconfiguration文件的静态文件的当前(工作)configuration如下:

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. } 

我想在浏览器中设置caching图片等的规则来限制每页的请求数量(每页通常有100张左右的图片,但整个网站的图片都是一样的)。 我尝试添加以下规则的一些变体:

 location ~* \.(css|js|gif|jpe?g|png)$ { expires 365d; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; } 

但是,当我这样做,我什么也得不到404错误(虽然configuration文件签出和重新加载没有错误)。 我相信这与别名有关,但我不知道如何解决这个问题。

任何build议,将不胜感激!

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