Статические файлы кеша NGINX

У меня возникли проблемы с определением правила кэширования моих статических файлов. Я нашел это решение:

location ~* \.(ico|js|css|png|gif|jpe?g)$ {
  expires 7d;
}

который на самом деле выглядит так, как мне нужно. Проблема в том, что если я включу этот код в мой файл в NGINX.conf, статические файлы больше не будут доставлены, а мой сайт пуст. Любые идеи/подсказки, что может вызвать этот результат? Возможно, мне нужно добавить, что статические файлы распространяются в разных каталогах:/. Мой конфигурационный файл NGINX выглядит следующим образом:

server {
  server_name               bla.domain.com;

  listen                    80;
  root                      /var/repo/;

  location / {
    default_type            text/html;
    index                   index.html;

    if ($request_method !~ ^(GET)$ ) {
      return 444;
    }

    if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
      return 403;
    }

    if ( $http_referer ~* (babes|forsale|girl|jewelry|love|nudit|organic|poker|porn|sex|teen) ) {
      return 403;
    }
  }

  location /bf/football/ {
    alias   /var/repos/f20;
  }

  location /bf/f20/ {
    alias   /var/repo/f20;
  }

  location /bf/zoo/ {
    alias   /var/repo/zoo/;
  }

  location /kbloader/ {
    alias   /var/repo/kbloader/;
  }
}

Было бы хорошо, если бы кто-то мог помочь мне с этим или указать мне в правильном направлении.

Cheers, Szop

Ответ 1

Поместите это перед другим блоком местоположения:

location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
    expires 30d;
    add_header Vary Accept-Encoding;
    access_log off;
}

Это должно сработать.

Вы также можете использовать это:

## All static files will be served directly.
location ~* ^.+\.(?:css|cur|js|jpe?g|gif|htc|ico|png|html|xml|otf|ttf|eot|woff|woff2|svg)$ {
    access_log off;
    expires 30d;
    add_header Cache-Control public;

    ## No need to bleed constant updates. Send the all shebang in one
    ## fell swoop.
    tcp_nodelay off;

    ## Set the OS file cache.
    open_file_cache max=3000 inactive=120s;
    open_file_cache_valid 45s;
    open_file_cache_min_uses 2;
    open_file_cache_errors off;
}

Ответ 2

Поместите это перед разделом сервера в конфигурационном файле nginx, как показано ниже:

. . .
# Expires map
map $sent_http_content_type $expires {
    default                    off;
    text/html                  epoch;
    text/css                   max;
    application/javascript     max;
    ~image/                    max;
}

server {
   listen 80 default_server;
   listen [::]:80 default_server;

   expires $expires;
. . .

~ изображение будет обрабатывать все виды изображений (вместо их жесткого кодирования)

для получения дополнительной информации о том, как обращаться с кэшированием nginx, см. ссылку link