#regex #nginx #nginx-location #nginx-config
#регулярное выражение #nginx #nginx-расположение #nginx-config
Вопрос:
Предположим, у меня есть эти пути:
/
/something # this path is variable (any characters except /)
/api/v1/something
Какая конфигурация nginx лучше всего соответствует этому требованию? Следующее не работает для m:
server {
listen 8080;
location ~^/(?:.*)$ {
...
}
location / {
...
}
location /api/v1/something {
...
}
}
Комментарии:
1. Является ли «что-то»
/api/v1/...
также строкой переменной длины?2. Нет, это маршрут!
Ответ №1:
Ваше регулярное выражение соответствует всему, что означает, что оно всегда выигрывает! Смотрите документацию, чтобы понять, как Nginx выбирает, какой location
блок обрабатывать запрос.
Вам не нужно использовать регулярное выражение location
.
Сначала определите location
блоки для одного URI с помощью =
оператора:
location = / { ... }
location = /api/v1/foo { ... }
Затем используйте значение по умолчанию location
, чтобы перехватить что-нибудь еще:
location / { ... }
Вышеуказанные location
блоки могут отображаться в любом порядке. Только регулярные выражения чувствительны к порядку вычисления.