Для разных разделов сайта мы используем разные заголовки кеширования. Например: /wp-admin
раздел вообще не должен кэшироваться, а /blog
раздел только на 4 часа вместо 2 дней по умолчанию.
В настоящее время я решил это, повторив location
-blocks, но это приводит к довольно подробному файлу. Есть ли более лаконичный способ добиться этого?
location /wp-admin/ {
etag off;
if_modified_since off;
add_header Last-Modified "";
add_header Cache-Control no-cache;
try_files $uri $uri/ /index.php?$args;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
location / {
expires 2d;
add_header Cache-Control "public";
try_files $uri $uri/ /index.php?$args;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
location /blog {
expires 4h;
add_header Cache-Control "public";
try_files $uri $uri/ /index.php?$args;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Невозможно сделать это с помощью стандартной конфигурации NGINX.
Чтобы привести в порядок вашу конфигурацию (без использования внешних инструментов), переместите общую конфигурацию в отдельный файл и включите ее из каждого раздела:
php.conf:
try_files $uri $uri/ /index.php?$args;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
site.conf:
location /wp-admin/ {
etag off;
if_modified_since off;
add_header Last-Modified "";
add_header Cache-Control no-cache;
include php.conf;
}
NGINX известен тем, что требует много повторений для расширенной настройки.