Попытка настроить шлюз api в Kubernetes с помощью nginx. Я пытаюсь следовать шаблону одного поддомена с указанием пути и версии службы.
api.domain.com/service/v0/api/resource/10 -> http://servicev0/api/resource/10
Пока игнорируем версию ...
Это решает.
location ~/(?<service>(\w+))/(?<version>(v[0-9]+(\.[0-9]+)*)) {
resolver 169.254.169.250;
proxy_pass http://theservice;
}
Это не разрешается с использованием api.domain / theservice / v0 /
location ~/(?<service>(\w+))/(?<version>(v[0-9]+(\.[0-9]+)*)) {
resolver 169.254.169.250;
proxy_pass http://$service;
}
ошибка
*1 theservice could not be resolved (110: Operation timed out),
Также необходимо переписать запрос, чтобы сбросить $service
и $version
.
Предлагаю посмотреть формат локации, хорошая статья здесь. Однако я дал вам прямой ответ внизу этого ответа.
Большинство моих местоположений имеют формат «местоположение (изменено) (строка)», например, указанные ниже
location ~* \.(jpg|jpeg|png|gif|css|js)$ {"
location = /wp-login.php {
location ~* (load_google_fonts|display_gallery_iframe) {
location ~ \.(hh|php)$ {
location ~* "wp-content\/uploads\/(\d{4,}\/\d{2,}\/.*|galleries\/.*)" {
Единственные локации без модификатора - это те, которые точно соответствуют
location / {
location = /robots.txt {
location /favicon.ico {
Я подозреваю, что вам нужно что-то еще подобное - единственное изменение касается ~ * и пробелов сразу после "location". ~ * - совпадение с регулярным выражением без учета регистра.
location ~* /(?<service>(\w+))/(?<version>(v[0-9]+(\.[0-9]+)*)) {