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. Подробнее.