Por que meus URLs estão codificados em nginx.conf?

1

Basicamente eu tenho esse arquivo nginx.conf onde recebo alguns parâmetros do meu formulário index.html page. Um desses parâmetros é chamado $url e eu uso para fazer um:

proxy_pass $url;

A coisa é que a operação falha porque o $url parece estar codificado e no meu arquivo error.log eu vejo algo assim:

[error] 18849#18849: *195088 invalid URL prefix in "http%3A%2F%2Fexample.com"

No entanto, se eu codificar a operação da seguinte forma:

proxy_pass http://example.com;

ou assim:

set $url_backup http://example.com
proxy_pass $url_backup;

funciona sem nenhum problema.

Como posso corrigir o problema do URL? Obrigado

    
por paulalexandru 19.12.2017 / 09:08

1 resposta

1

Basicamente, como você está usando parâmetros GET para sua sintaxe $ url, a codificação de strings é obrigatória para os URLs HTTP. É por isso que todos os caracteres especiais são excluídos do seu formulário para o seu URL.

Mas você pode fazer as coisas por um script LUA com o nginx-lua-module < um href="https://github.com/openresty/lua-nginx-module#ngxescape_uri"> ngx-escape-uri decodificando sua URL:

newstr = ngx.unescape_uri($url)

(dependendo de como você conseguiu seu URL)

Fontes: link

    
por 20.12.2017 / 15:28