Resolvedor de passagem de proxy dinâmico NGINX

2

Tentando configurar um gateway de API no Kubernetes com nginx. Estou tentando seguir o padrão de subdomínio único com o caminho especificando o serviço e a versão.

api.domain.com/service/v0/api/resource/10 -> http://servicev0/api/resource/10

Ignorando a versão por enquanto ...

Isso resolve.

location ~/(?<service>(\w+))/(?<version>(v[0-9]+(\.[0-9]+)*)) {
    resolver 169.254.169.250;
    proxy_pass http://theservice;
}

Isso não resolve usando api.domain / theservice / v0 /

location ~/(?<service>(\w+))/(?<version>(v[0-9]+(\.[0-9]+)*)) {
    resolver 169.254.169.250;
    proxy_pass http://$service;
}

Erro

*1 theservice could not be resolved (110: Operation timed out), 

Também é necessário reescrever a solicitação para eliminar os $service e $version .

    
por Justin Poehnelt 07.10.2016 / 18:47

1 resposta

0

Sugiro que analise o formato da localização, artigo bom aqui . No entanto, eu lhe dei uma resposta direta na parte inferior desta resposta.

A maioria dos meus locais está no formato "location (modified) (string)", como os abaixo

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\/.*)" {

Os únicos locais sem um modificador são os únicos para uma correspondência exata

location / {
location = /robots.txt {
location /favicon.ico {

Eu suspeito que você precise de algo mais parecido com isso - a única mudança está em torno do ~ * e espaços logo após a "localização". ~ * é uma correspondência de expressão regular insensível a maiúsculas e minúsculas.

location ~* /(?<service>(\w+))/(?<version>(v[0-9]+(\.[0-9]+)*)) {
    
por 07.10.2016 / 21:27