secure_link_secret

Директива `secure_link_secret` задаёт общий секрет, используемый для проверки защищённых ссылок в NGINX. — NGINX HTTP Core

secure_link_secret
httpserverlocation
Синтаксисsecure_link_secret string;
По умолчаниюnone
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументы1

Описание

Директива `secure_link_secret` используется в конфигурации NGINX для указания секретного ключа, который применяется при генерации и проверке защищённых ссылок. Это особенно полезно для защиты конфиденциальных ресурсов, поскольку гарантирует, что доступ к ссылкам возможен только у клиентов, обладающих корректной подписью, что ограничивает доступ к целевым файлам для неавторизованных пользователей. Когда создаётся защищённая ссылка, она состоит из исходного имени файла и метки времени истечения срока действия, которые криптографически хэшируются с помощью `secure_link_secret`. Это делает ссылку защищённой от подделки: любое изменение ссылки приведёт к отказу в проверке. Когда пользователь пытается получить доступ по защищённой ссылке, NGINX проверяет эту подпись с использованием `secure_link_secret` и разрешает доступ только если хэш корректен и срок действия не истёк. Директива принимает один аргумент — строку общего секрета. Её следует настраивать в контекстах `http`, `server` или `location`; использование этой директивы включает функциональность, связанную с защищёнными ссылками, которая также может требовать применения директивы `secure_link` для управления генерацией и проверкой самих ссылок. Необходимо тщательно хранить общий секрет в конфиденциальности, чтобы предотвратить неавторизованный доступ к ресурсам.

Пример конфига

http {
    secure_link_secret "1mVm0gfR1cuNzU3nXqRxVhbSe3";
}

server {
    location /protected {
        secure_link $arg_hash,$arg_time;
        if ($secure_link = "0") {
            return 403;
        }
        
        # Serve the protected content...
    }
}

Убедитесь, что общий секрет хранится в тайне и ни в коем случае не раскрывается публично и не записывается в логи.

Изменение секрета после выдачи ссылок сделает эти ссылки недействительными и потребует генерации новых ссылок с использованием нового секрета.

Тестирование защищённых ссылок в процессе разработки может потребовать сложной настройки, чтобы убедиться, что секрет установлен правильно. Любое несоответствие заблокирует доступ.