nginx proxy_pass upstream substitui por variáveis

0

meu upstream:
upstream upstream_ uba1 _console_f485c00e45256742e2cc641db834b150 {         ip_hash;         servidor 192.30.56.172:39443;         intervalo de verificação = 2000 rise = 1 fall = 3 timeout = 3000;     }

upstream upstream_ uba2 _console_f485c00e45256742e2cc641db834b150 {         ip_hash;         servidor 192.30.56.173:39443;         intervalo de verificação = 2000 rise = 1 fall = 3 timeout = 3000;     }

minha localização:         localização / opsuba / {           if ($ args ~ * region = (\ w +?) (& | $)) {                defina $ region $ 1;             }             limit_req zone = reqconsole burst = 10000 nodelay;             limit_conn connconsole 1000;              proxy_pass link $ {region} _console_f485c00e45256742e2cc641db834b150;             inclua error_page_exclude_ajax.conf;             inclua static_file.conf;             access_log off;         }

como posso fazer upstream _ $ {region} _console_f485c00e45256742e2cc641db834b150 substituir por variáveis?

    
por zhangwenzhen 16.01.2017 / 14:11

1 resposta

0

Você especifica a variável como $1 (de regexp) ou $region do comando set .
Isso deve funcionar na sua configuração:

proxy_pass http://upstream_$region_console_f485c00e45256742e2cc641db834b150;

Acabei de testar com este exemplo de configuração:

upstream upstream_uba1_console_f485c00e45256742e2cc641db834b150 { ip_hash; server 127.0.0.1:39443; }
upstream upstream_uba2_console_f485c00e45256742e2cc641db834b150 { ip_hash; server 127.0.0.1:39444; }

server {
    listen       80;
    location ~ ^/([^\/]*) {
        proxy_pass http://upstream_$1_console_f485c00e45256742e2cc641db834b150;
    }
}
server {
        listen 39443;
        root /var/www/;
        location / {
                try_files /url1.html $uri;
        }
}
server {
        listen 39444;
        root /var/www/;
        location / {
                try_files /url2.html $uri;
        }
}

Arquivos no sistema de arquivos:

/var/www/url1.html -> content url 1
/var/www/url2.html -> content url 2

Acesso através de:

http://localhost/uba1/ -> url1.html
http://localhost/uba2/ -> url2.html

Eu fiz tudo com backends locais, mas vou trabalhar com o seu também.
Também tive que remover alguns parâmetros do seu bloco upstream para que funcionasse.

    
por 10.03.2017 / 11:21

Tags