0

我正在尝试让缓存控制工作。

在 nginx 中,我有以下内容:

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

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

在网络浏览器中,我收到 404 错误。找不到图片。如果我删除位置 /static/ 这个网站可以工作,但我没有缓存控制。

我该如何解决?

4

1 回答 1

1

如果您使用 url like: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 = static/.*)。

为什么这样?alias指令(别名 doc)的工作方式如下:它从location指令末尾匹配的请求 url 部分修剪,然后将保留的内容附加到它自己的规则路径。在您的 url 示例中,/static/image.gif/它将修剪/static/并仅附加到您的alias路径image.gif,因此看起来就像我写的:/home/ubuntu/workspace/mysiteimage.gif/`。

于 2013-01-30T09:57:31.670 回答