разрешить запросы на /api :
annotations:
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/configuration-snippet: |
location ~ ^/api/v\d+/docs {
return 403;
}
spec:
ingressClassName: nginx
...
rules:
...
- host: partner.force2.ru
http:
paths:
- backend:
service:
name: frontend-service
port:
number: 80
path: /
pathType: Prefix
- backend:
service:
name: interaction-service
port:
number: 80
path: /api/
pathType: Prefix
можете объяснить почему не работает и как лучше сделать в моем случае?
\d+ - а такая регулярка работает в локейшенах?боюсь тот лучше [0-9]
а ещё тебе наверное логичнее сервер сниппет использовать, чтобы глобально 1 раз прописалось, а не внутрь всех локейщенов
потому что когда включаешь регулярки, у тебя они включаются для всех paths а регулярки в nginx работают по принципу какая первая по порядку совпала, та конфигурация и используется НО!!! nginx ingress controller сортирует paths по убиыванию для таких случаев НО!!! snippet никак не учитывается в этой сортировке я вам советую глянуть какой в итоге конфиг получился для хоста k exec nginx-ingress-pod-name -- cat /etc/nginx/nginx.conf и искать домен затем смотреть в каком порядке locations и где стоит snippet кстати вам для location нужен server-snippet, а не configuration-snippet
много с чем согласен, а кой чего ну вот нет)) потому что когда включаешь регулярки Так и пофиг что он включает и насрать какая последовательность)), ведь оно добавляется внутрь каждого локейщена)), а значит сработает))
не понял, что добавляется внутрь location'а?
location ~ ^/api/v\d+/docs { return 403; } Это добавляется внутрь каждого локейшена, а патчи в ингрессе порождают локейшены
ааа, configuration-snippet внутрь каждого добавляется. Понял но я такие конфигурации не люблю (вложенные локейшены)
кстати с 1.9 по умолчанию сниппеты отключены
вложенные локейшены, особенно когда вложенный локейшен из ругулярки это хорошо, я все регулярки стараюсь внутрь сувать)
оно даже не задеплоится если он не включил)) А на сколько я понял у него не срабатывает, но деплоится
с регуляргами имеет смысл да
ваще странно что этот конфиг не работает, если эта штука засовывает в каждый location этот snippet. по идее должно было сработать 🤔, и не важно что верхние location из-за use-regex станут регулярками
да хз, но это можно отключить
меня смущает \d в локейшене, оно разве там работает так?
ну если в nginx.conf в таком виде попало, то вроде должно. В nginx вроде PCRE синтаксис регялярок но я бы тоже предпочел [0-9]+
ну попасть оно туда что угодно попасть может, но как будет работать вопрос другой
Обсуждают сегодня