Isso não funcionará.
Se eu entendi corretamente, você deseja fazer proxy para o mesmo host em solicitações sucessivas.
O Nginx manipula solicitações independentes umas das outras. Então, na segunda e na terceira solicitação, se $arg_proxytohost
estiver ausente e o padrão fornecido for usado.
Sugiro usar cookies para isso. Um pequeno exemplo abaixo.
Isso precisa estar no http {} poderia estar em conf.d em um arquivo separado
map $cookie_p_host $p_host {
default $cookie_p_host;
"" $host;
}
Em seguida, temos os locais que entram no servidor {}
location ~ /proxy/sethost/(?<p_host>.*) {
add_header Set-Cookie 'p_host=$p_host;path=/proxy';
add_header Content-type text/html;
return 200 'cookie was "$cookie_p_host"<br>now set to "$p_host"';
}
location ~ /proxy(?<p_uri>.*) {
resolver 8.8.8.8 ;
resolver_timeout 5s;
proxy_set_header Host $p_host;
proxy_pass http://$p_host$p_uri;
}
uso / explicação:
mapeamento
O mapeamento é usado para evitar declarações desagradáveis. Se o cookie é definido, ele é usado como o nome do host (correto ou não, nós não verificamos ou nos importamos). Se não estiver definido (null / empty), usamos a variável $ host. Pode mudar isso para qualquer coisa que você quiser lá.
primeiro local
( link ) irá definir um cookie com o host definido para example.com. Qualquer coisa depois de / proxy / sethost / contará como o nome do host!
segunda localização
( link ) agora será procurado em example.com. Adicionado um resolvedor para pesquisas dinâmicas se ainda não estiver em algum outro lugar na configuração. Precisamos definir o cabeçalho do host da solicitação de proxy para o solicitado e vamos lá.
Espero que isso ajude. O voodoo de redirecionamento é outro tópico