Назад | Перейти на главную страницу

Срок действия 410 ответов в nginx

По умолчанию браузеры кешируют 410 Gone ответов на неопределенный срок. Случайная ошибка 410 может навсегда уничтожить URL-адрес. URL-адрес может быть восстановлен позже по другим причинам. Я бы хотел установить expires на 410 с, чтобы время от времени обновлять браузер. Есть ли способ сделать это с помощью nginx?

server {
    # ...
    error_page 410 /errors/410.html;
    location /errors/ {
        internal;
        expires 1h;
    }
    location = /some/file {
        expires 1h;
        return 410;
    }
}

Приведенная выше конфигурация приводит к ответам без каких-либо директив управления кешем.

HTTP 410, согласно Википедии, означает

410 Gone - указывает, что запрошенный ресурс больше не доступен и больше не будет доступен.

Вам следует использовать более подходящий код ответа. 444 «соединение закрыто без ответа» или 404 «не найдено» могут быть более подходящими, но это то, что вам нужно изучить.

Я не склонен часто использовать expires в Nginx, я добавляю заголовки. Это дает мне больше контроля, так как я могу указывать такие вещи, как s-maxage, который контролирует максимальный возраст общего кеша. Для этого требуется, чтобы модуль headers_more был скомпилирован, что по умолчанию для некоторых платформ.

add_header Cache-Control "public, max-age=691200, s-maxage=691200";