nginx和django - gettng cache-control工作

时间:2013-01-30 06:16:59

标签: django nginx

我正在尝试使用cache-comtrol工作。

在nginx中我有以下内容:

    location /static/ {
        alias /home/ubuntu/workspace/mysite;
        expires max;
        add_header Cache-Control public;
    }

在mysite目录中我有静电。在静态中,我有js,css和图像的目录。

在网络浏览器中,我收到404错误。图像无法找到。如果我删除location / static /这个站点有效,但我没有缓存控制。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

如果您使用类似:http://your.page.com/static/image.gif的网址,那么您可以使用规则获得此类uri(包括alias指令):

/home/ubuntu/workspace/mysiteimage.gif;

所以结论是从/指令删除最后location(它应该是/static)或者在alias指令/的末尾添加(所以它将为alias /home/ubuntu/workspace/mysite/;

其他解决方案可能如下:

location ~ (static/.*) {
   alias /home/ubuntu/workspace/mysite/$1;
   # ... rest of code here
}

然后您不必在static指令中再次添加alias。你只需将它用作位置参数($ 1 =静态/.*).

为什么这样? alias指令(alias doc)的工作原理如下:它从location指令结束时匹配的请求的url部分进行修剪,然后将保留的内容附加到它自己的规则路径。在您的网址/static/image.gif/的示例中,它将修剪/static/alias路径只追加image.gif所以它看起来像我写的:/ home / ubuntu / workspace / mysiteimage .gif注意/`。

我希望这会有所帮助,并为您提供一些有用的信息。