Это мой Nginx дефолт conf (sites-available/default
), который я использую как базовый для всех приложений:
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; }
Записи, логично / безопасно удалить все эти записи и оставить только одну такую строку в конфигурации по умолчанию? Это личные приложения, и я лично не вижу проблем в том, чтобы дать им все те же директивы кеширования, я просто хочу уменьшить избыточность.
Это не сработает, запрос обслуживается одним серверным блоком, если явно не пересылается другому.
Это можно сделать с помощью include. Например
# 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;
}
Вы можете определить столько файлов, сколько захотите, и включать их куда угодно. Остерегайтесь рекурсии.