Como usar uma variável personalizada para o esquema em uma regra de reescrita no nginx

1

Existe uma maneira de fazer com que o nginx trate uma variável personalizada da mesma forma que trata o esquema $ em uma regra de reescrita? Por exemplo:

rewrite ^/redirect http://example.com;
# and
rewrite ^/redirect_with_scheme $scheme://example.com;

resultará em um redirecionamento 302 sendo enviado ao cliente. No entanto, isso:

set $real_scheme $scheme;
rewrite ^/redirect_with_real_scheme $real_scheme://example.com;

resultará em uma reconfiguração do lado do servidor para um arquivo que não existe necessariamente e, em seguida, um 404 para o cliente. Por que vale a pena isso:

set $real_scheme $scheme;
rewrite ^/redirect_with_real_scheme $real_scheme://example.com redirect;

dará o resultado desejado de enviar um 302 para o cliente. Infelizmente, tenho muitos redirecionamentos configurados dessa forma e prefiro não atualizar todos eles com a diretiva redirect , se não for necessário.

Se for útil, estou usando o Nginx 1.6.2.

    
por dustyburwell 24.10.2014 / 19:43

1 resposta

0

Não consigo reproduzir seu problema.

Eu tentei a seguinte configuração mínima, cada rewrite funcionando como esperado (HTTP 302s):

events {
    worker_connections  1024;
}


http {
    include mime.types;
    server {
        listen       80;

        set $real_scheme $scheme;
        rewrite ^/redirect http://localhost;
        rewrite ^/redirect_with_scheme $scheme://localhost;
        rewrite ^/redirect_with_real_scheme $real_scheme://localhost;
    }
}

Você poderia me fornecer uma configuração mínima capaz de demonstrar as regras rewrite com defeito?

    
por 07.11.2014 / 20:01