Из того, что я вижу, вы пытаетесь создать два отдельных пути, где /api/secure
будет доступно только для определенных IP-адресов.
Я повторил вашу проблему, провел несколько тестов и нашел решение.
При создании двух входящих объектов, подобных вашему, которые отличаются по полю path
, например, у одного есть path: /api/(.*)
, а у второго * path: /api/secure
nginx сгенерирует следующую конфигурацию (вывод сокращен):
server {имя_сервера beta.xyz.com;
listen 80 ;
listen 443 ssl http2 ;
...
location ~* "^/api/secure" {
...
}
location ~* "^/api/(.*)" {
...
}
и в документации nginx вы можете прочитать:
Чтобы найти подходящее местоположениеПо заданному запросу nginx сначала проверяет местоположения, определенные с помощью префиксных строк (префиксные местоположения). Среди них location with the longest matching prefix is selected and remembered
. Затем проверяются регулярные выражения в порядке их появления в файле конфигурации. Поиск регулярных выражений прекращается при первом совпадении, и используется соответствующая конфигурация.
значение: NGINX всегда выполняет запросы, используя самое конкретное совпадение
На основе этой информации создаетсяДва отдельных входа, как вы упомянули, должны решить вашу проблему, потому что /api/secure
всегда будет более конкретным путем, чем /api/(.*)
.
Дайте мне знать, помогло ли это.