Регулярное выражение Nginx для соответствия одному пути

#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 блоки могут отображаться в любом порядке. Только регулярные выражения чувствительны к порядку вычисления.