Логично и безопасно ли добавлять директиву истечения срока действия кэша Nginx в conf по умолчанию?

Это мой конф по умолчанию для Nginx (sites-available/default), который я использую в качестве базового conf для всех приложений:

server {
    # listen, root, index, server_name, locations;
    listen 80 default_server;
    listen [::]:80 default_server;
    root /var/www/html;
    index index.php index.html index.htm index.nginx-debian.html;
    server_name _;

    location / {
        try_files $uri $uri/ =404;
    }
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }
}

Каждое приложение также имеет индивидуальный конф Nginx (sites-available/${domain}.con):

server {
    root ${drt}/${domain}/;
    server_name ${domain} www.${domain};
    location ~* \.(jpg|jpeg|png|gif|ico|css|js|ttf|woff|pdf)$ { expires 365d; }
}

Здесь есть небольшое дублирование: если на этом сервере я скажу 10 приложений, я получу дубликат *10 строки директивы истечения срока действия кэша:

location ~* \.(jpg|jpeg|png|gif|ico|css|js|ttf|woff|pdf)$ { expires 365d; }

Вместо десяти location ~* \.(jpg|jpeg|png|gif|ico|css|js|ttf|woff|pdf)$ { expires 365d; } записи, логично / безопасно удалить все эти записи и оставить только одну такую ​​строку в conf по умолчанию? Это персональные приложения, и я лично не вижу проблем с предоставлением им одинаковых директив кэширования, я просто хочу уменьшить избыточность.

1 ответ

Решение

Это не сработает, запрос обслуживается одним блоком сервера, если только явная пересылка не будет передана другому.

Способ сделать это с помощью включает. Например

# File site-a.conf
server {
  root /var/www/site1;
  server_name sub1.example.com;

  include /etc/nginx/fragments/jpeg-expires.conf;
}

# File site-b.conf
server {
  root /var/www/site2;
  server_name sub2.example.com;

  include /etc/nginx/fragments/jpeg-expires.conf;
}

# file /etc/nginx/fragments/jpeg-expires.conf
location ~* \.(jpg|jpeg|png|gif|ico|css|js|ttf|woff|pdf)$ {
  expires 365d; 
}

Вы можете определить столько файлов, сколько хотите, и включать их где угодно. Остерегайтесь рекурсии.

Другие вопросы по тегам