Nginx 忽略子目录的过期标头

Nginx 忽略子目录的过期标头

我已经在我的服务器(Fedora 21 x64)上编译并安装了 nginx。

我为静态内容添加了过期时间和一些额外的标头。但问题是,nginx 不会为根目录和子目录添加过期时间和额外的标头。

让我解释清楚一下。

mydomain.com/anything.html <-- 添加了 Expires + 额外标头。

mydomain.com/index.html --> (重定向) mydomain.com/ <-- 没有标题,没有过期。

mydomain.com/projects/index.html --> (重定向) mydomain.com/projects/ <-- 没有标题,没有过期。

我已将我的服务器配置为将 /index.html 重定向到其父子目录。

以下是配置的一部分:

if ($request_uri ~ ^(.*/)index\.html($|\?.*)?) {
  return 301 $1$2;
}

location ~* \.html$ {
  expires max;
  add_header "x-ua-compatible" "ie=edge";
  add_header x-frame-options deny;
  add_header x-content-type-options nosniff;
  add_header x-xss-protection "1; mode=block";
  add_header "cache-control" "no-transform";
  access_log logs/static.log;
}

答案1

没关系。这只是重新安排一下顺序的问题。

这是工作配置。

location ~* \.html$ {
    add_header "x-ua-compatible" "ie=edge";
    add_header x-frame-options deny;
    add_header x-content-type-options nosniff;
    add_header x-xss-protection "1; mode=block";
    add_header "cache-control" "no-transform";
    expires max;
    gzip_static always;
    access_log logs/static.log;
}

location ~* \.(?:html|css|js|txt|xml)$ {
  gzip_static always;
}

相关内容