Для разных разделов сайта мы используем разные заголовки кеширования. Например: раздел / 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 известен тем, что требует большого количества повторений для расширенной настройки.