A variável Nginx no passo de proxy não funciona

1

proxy_pass pode trabalhar com variáveis? Estou tentando fazer a configuração abaixo funcionar:

    http {
       ...

        map $http_user_agent $myvariable {
            default 'mobile';    

        }

       ...
    }

A configuração da localização:

server {
    listen       80;

   ...

    location /site {        
            proxy_pass http://docker-site/site/$myvariable;
        }

   ...
}

A configuração funciona se eu substituir o proxy_pass por http://docker-site/site/mobile;

Deixe-me saber se estou no caminho certo.

    
por Syed Osama Maruf 11.10.2018 / 15:26

1 resposta

0

Esses dois casos não são os mesmos. Se você usar uma variável, esse valor substituirá o URI inteiro.

Neste caso:

location /site { 
    proxy_pass http://docker-site/site/mobile;
}

o URI /site/foo é passado no envio como /site/mobile/foo .

Para usar sua variável, você pode usar uma reescrita (consulte este documento para obter detalhes) :

location /site { 
    rewrite ^/site(.*)$ /site/$myvariable$1 break;
    proxy_pass http://docker-site;
}

Ou um local de expressão regular:

location ~ ^/site(.*)$ {
    proxy_pass http://docker-site/site/$myvariable$1;
}

A ordem de avaliação dos blocos de localização de expressão regular é significativa. Consulte este documento para obter detalhes.

    
por 11.10.2018 / 16:18