Установка разных заголовков кеша для каждого раздела сайта в nginx

Для разных разделов сайта мы используем разные заголовки кеширования. Например: раздел / wp-admin не должен кэшироваться вообще, а раздел / blog только на 4 часа вместо 2 дней по умолчанию.

В настоящее время я Я решил эту проблему, повторяя location -blocks, но это приводит к довольно подробному файлу. Есть ли более краткий способ добиться этого?

Пример текущей конфигурации nginx

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;
    }
}
0
задан 5 July 2016 в 15:09
1 ответ

Невозможно сделать это с помощью стандартной конфигурации 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 известен тем, что требует большого количества повторений для расширенной настройки.

2
ответ дан 4 December 2019 в 13:40

Теги

Похожие вопросы