【问题标题】:Config caching css/js files at Nginx在 Nginx 中配置缓存 css/js 文件
【发布时间】:2016-08-25 10:25:06
【问题描述】:

我正在使用 Ubuntu 14.04 的 nginx 主机

我的配置文件:

  server {

    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.php index.html index.htm;

    # Make site accessible from http://localhost/
    server_name testing.com;



location /site/admin/ {
    alias /usr/share/nginx/html/site/admin/src/;
}

location ~ \.(css|js)$ {
     expires 1y;
     access_log off;
     add_header Cache-Control "public";
}

我有一些错误

[error] 29224#0: *10047 open()     "/usr/share/nginx/html/site/admin/assets/js/jquery.nestable.js" failed (2: No such file or directory) 

实际上该文件位于:

 /usr/share/nginx/html/site/admin/src/assets/js/jquery.nestable.js

如何设置我的配置文件?

【问题讨论】:

    标签: file caching nginx ubuntu-14.04


    【解决方案1】:

    您的 location ~ \.(css|js)$ 块从服务器块继承 root /usr/share/nginx/html

    此外,正则表达式位置块优先于前缀位置块 - 有关详细信息,请参阅 this document

    您可以使用^~ 修饰符强制location /site/admin/ 块覆盖同一级别的正则表达式位置块:

    location ^~ /site/admin/ {
        alias /usr/share/nginx/html/site/admin/src/;
    }
    

    上述位置块是前缀位置(而不是正则表达式位置块)。详情请见this document

    当然,这也意味着以/site/admin/ 开头并以.css.js 结尾的URI 将不再更改其缓存参数。这可以通过添加嵌套的位置块来解决,如下所示:

    location ^~ /site/admin/ {
        alias /usr/share/nginx/html/site/admin/src/;
    
        location ~ \.(css|js)$ {
            expires 1y;
            access_log off;
            add_header Cache-Control "public";
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-08-30
      • 2011-11-01
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 2017-04-01
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多