limit_except

Директива 'limit_except' ограничивает HTTP-методы запросов в указанном блоке location. — NGINX HTTP Core

limit_except
location
Синтаксисlimit_except method { deny|allow ...; };
По умолчаниюnone
Контекстlocation
МодульNGINX HTTP Core
Аргументыblock (1+)

Описание

Директива 'limit_except' в NGINX используется внутри блока location для ограничения допустимых HTTP-методов запросов. При применении она задаёт набор разрешённых методов, а все остальные методы получат ответ 403 Forbidden. Например, если вы укажете 'GET' и 'HEAD' в блоке 'limit_except', все остальные методы, такие как 'POST', 'PUT' или 'DELETE', будут заблокированы. Это полезно для защиты ресурсов, где должны быть разрешены только определённые методы, что повышает контроль доступа и безопасность. Директива принимает в качестве аргумента блок, который содержит один или несколько методов, указанных в соответствующем синтаксисе конфигурации. Каждый метод можно перечислить подряд внутри блока. Например, если у вас есть 'limit_except GET { deny all; }', то будут разрешены только GET-запросы к этому location. Важно понимать, что в контексте защиты URI определённые здесь исключения обеспечивают корректную обработку запрещённых запросов, одновременно гарантируя обслуживание легитимных методов без прерываний.

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

location /protected {
    limit_except GET {
        deny all;
    }
}

Убедитесь, что методы, указанные в 'limit_except', поддерживаются вашим приложением; неподдерживаемые методы могут непреднамеренно возвращать ошибку 403.

Помните, что правила 'limit_except' применяются только к указанному location block и не к вложенным location block, если они там явно не определены.