为特定 url 启用 nginx 浏览器缓存

ham*_*fzm 3 ubuntu configuration nginx cache

如何为特定 URL 启用 nginx 缓存?我有一个 django web 应用程序,我将静态文件(例如 CSS、JavaScript 等)放在名为 static 的文件夹中,我可以通过http://example.com/static/访问它们,并且我想按顺序配置 nginx仅从该 url 捕获这些文件。我读过http://www.nginxtips.com/how-to-enable-browser-cache-static-files-on-nginx/但那里没有解释这个选项。我尝试了下面的配置并重新启动了我的 nginx 服务器,但出现错误。这是我的 sites-available/default配置文件。有什么问题?

server {
        listen  80;
        listen  443 ssl;
        server_name     www.example.com example.com;
        ssl_certificate /var/www/example/ssl/ssl.crt;
        ssl_certificate_key     /var/www/example/ssl/ssl.key;
        location /static (jpg|jpeg|png|gif|ico|css|js)$ {
                alias   /var/www/example/static;
                expires 3d;
                add_header Pragma public;
                add_header Cache-Control "public, must-revalidate, proxy-revalidate";

        }
        location /media  {
                alias  /var/www/example/media;
        }
        location / {
                proxy_pass      http://127.0.0.1:8000;
        }
}
Run Code Online (Sandbox Code Playgroud)

这是 nginx 日志文件内容......

2014/03/07 13:02:28 [error] 25189#0: *22 open() "/etc/nginx/html/static/css/wait.css" failed (2: No such file or directory), client: 2.178.27.157, server: www.example.com, request: "GET /static/css/wait.css HTTP/1.1", host: "example.com", referrer: "http://example.com/"
2014/03/07 13:02:28 [error] 25189#0: *23 open() "/etc/nginx/html/static/img/infographi.png" failed (2: No such file or directory), client: 2.178.27.157, server: www.example.com, request: "GET /static/img/infographi.png HTTP/1.1", host: "example.com", referrer: "http://example.com/"
2014/03/07 13:02:29 [error] 25189#0: *23 open() "/etc/nginx/html/favicon.ico" failed (2: No such file or directory), client: 2.178.27.157, server: www.example.com, request: "GET /favicon.ico HTTP/1.1", host: "example.com"
2014/03/07 13:08:41 [emerg] 25220#0: invalid location modifier "/static" in /etc/nginx/sites-enabled/default:8
2014/03/07 13:08:41 [emerg] 25221#0: invalid location modifier "/static" in /etc/nginx/sites-enabled/default:8
2014/03/07 13:09:50 [emerg] 25255#0: invalid location modifier "/static" in /etc/nginx/sites-enabled/default:8
2014/03/07 13:09:50 [emerg] 25256#0: invalid location modifier "/static" in /etc/nginx/sites-enabled/default:8
Run Code Online (Sandbox Code Playgroud)

小智 5

nginx wiki看来,“/static”和正则表达式模式之间有一个空格。Location 只需要一个“uri”参数,而不是两个……并且 nginx 会将该空格解释为参数分隔符。

此外,您还需要告诉位置块您想要将正则表达式与“~”或“~*”修饰符相匹配。

你可以尝试这个

location ~* "/static.*(jpg|jpeg|png|gif|ico|css|js)$" {
Run Code Online (Sandbox Code Playgroud)

而不是你拥有的,看看它是否符合你的要求。