Como encaminhar com base na porta no nginx

1

se eu tiver o local para fazer proxy assim:

location /proxy{
   proxy_pass http://127.0.0.1:1234;
}

ele só encaminhará para localhost:1234 . Agora o que eu quero é algo assim: /proxy/5544/abcd/1234 -> localhost:5544/abcd/1234 /proxy/5353/xyz/555 -> localhost:5353/xyz/555

Como conseguir isso?

Atualizar Então, o que eu quero ser é um mapeamento dinâmico de portas seguindo este formato: /proxy/{port}/{path}

Então, aqui está mais um exemplo do mapeamento:

localhost/proxy/1234/abcd/xyz -> localhost:1234/abcd/xyz
localhost/proxy/9999/1234/5678 -> localhost:9999/1234/5678
localhost/proxy/8080/sub-path/another-path -> localhost:8080/sub-path/another-path
    
por Hans Yulian 23.11.2018 / 08:15

1 resposta

1

Com o manuscrito, não há teste. A ideia geral é essa.

location ~ /proxy/(\d+)/(.*)$ {
   set $flag $1;
   set $url $2;
   set $default_port 1234;
   if ($flag ~ 5544) {
      set $default_port 555;
   }

   rewrite ^.*$ /$url break;
   proxy_pass http://127.0.0.1:$default_port;
}

# curl http://127.0.0.1:555
555
# curl http://127.0.0.1:1234
1234
# curl http://127.0.0.1:80/proxy/5353/index.html
1234
# curl http://127.0.0.1:80/proxy/5544/index.html
555
    
por 23.11.2018 / 10:34