Перейти к содержанию

Regex-location можно заменить на точное совпадение

Gixy Check ID: regex_exact_match

Когда regex в location совпадает с единственным литеральным путём (якоря ^ и $, без спецсимволов), его можно заменить на location с точным совпадением (=) для лучшей производительности.

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

Неверно:

location ~ ^/api/health$ {
    return 200;
}

Здесь используется движок регулярных выражений для того, что по сути является фиксированной строкой.

Верно:

location = /api/health {
    return 200;
}

Location с точным совпадением даёт тот же результат без затрат на regex.

Когда проверка не применяется

Проверка срабатывает только для регистрозависимых regex-location (~). Регистронезависимые (~*) не отмечаются, поскольку модификатор = всегда регистрозависим, и преобразование изменило бы поведение.

Паттерны с любыми regex-фичами (классы символов, квантификаторы, группы, альтернации) также не отмечаются.

Укрепляйте NGINX с поддерживаемыми RPM

Используйте NGINX Extras от GetPageSpeed для постоянно обновляемого NGINX и модулей на RHEL/CentOS/Alma/Rocky. Подробнее.