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

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-фичами (классы символов, квантификаторы, группы, альтернации) также не отмечаются.

Ловите такие ошибки до продакшена

GetPageSpeed Amplify запускает Gixy по расписанию на каждом сервере NGINX и оповещает о новых находках и CVE, показывая их рядом с метриками. Настроить непрерывный мониторинг.