加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

ruby-on-rails – nginx没有在Rails静态资产上设置expires头

发布时间:2020-12-13 21:03:16 所属栏目:Nginx 来源:网络整理
导读:我似乎无法让nginx在我的Rails应用程序中的静态资产上设置expires标头. 我的应用程序使用Phusion Passenger nginx的. 下面是我的nginx配置文件的相关部分 server { listen 80; server_name my.domain.tld; root /home/deploy/my.domain.tld/current/public;

我似乎无法让nginx在我的Rails应用程序中的静态资产上设置expires标头.

我的应用程序使用Phusion Passenger& nginx的.

下面是我的nginx配置文件的相关部分

server {
        listen  80;
        server_name my.domain.tld;
        root /home/deploy/my.domain.tld/current/public;
        passenger_enabled on;
        access_log off;

        location ~* .(ico|css|js|gif|jp?g|png)?[0-9]+${
                expires max;
                break;
        }

        if (-f $document_root/system/maintenance.html) {
                rewrite ^(.*)$/system/maintenance.html break;
        }
}

我不确定为什么它的设置不会在我的静态资产上过期(例如/images/foo.png?123456)

我不确定它是否与乘客有关,或者我的位置regexp是不是没有抓住它

最佳答案
只是想指出使时间戳可选是一个坏主意 – 如果它没有包含,那么设置expires max是错误的,因为没有办法刷新文件.

此外,Nginx中的location指令无法查看查询字符串,因此此处发布的解决方案永远不会匹配“可选”时间戳.

一个适当的解决方案(即只有在使用时间戳请求文件时才发送最大值的解决方案)将是:

location ~* .(js|css|png|jpg)${
  if ($query_string ~ "^[0-9]+$") {
    expires max;
    break;
  }
}

如果未指定时间戳,则依赖于Last-Modified和ETag,它们由Nginx自动处理.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读