URI base do proxy reverso Nginx para alterar a porta

URI base do proxy reverso Nginx para alterar a porta

Olá, quero proxy reverso, minha porta base Nginx usada, por exemplo

http://example.com:443/ips/8443 -> http://example.com:8443/ips/8443
http://example.com:443/ips/23950 -> http://example.com:23950/ips/23950

Se apoiar, seria muito melhor, mas não é obrigatório

http://example.com:443/ips/23950/xyz -> http://example.com:23950/ips/23950/xyz

E esta é minha configuração

    location ~ /ips/([0-9]+)(/|)(\S+|)$ {
            proxy_pass http://127.0.0.1:$1/$3;
    }

Não entendo REGEX no nginx corretamente, mas posso dizer que tentei o meu melhor

Responder1

Para corrigir esse problema, você precisará atualizar a diretiva proxy_pass para incluir o caminho completo do URL na solicitação com proxy. Isso pode ser feito usando a variável $request_uri, que contém o caminho completo da URL da solicitação recebida.

Aqui está um exemplo de como a diretiva proxy_pass atualizada pode parecer:

proxy_pass http://127.0.0.1:$1$request_uri;

Isso passará a solicitação para a porta local, juntamente com o caminho URL completo da solicitação recebida. Portanto, uma solicitação para /ips/23950/xyz será enviada por proxy parahttp://127.0.0.1:23950/xyz, o que deve permitir que a solicitação seja tratada corretamente pelo servidor local.

Também é importante notar que o bloco location que contém a diretiva proxy_pass deve ser o único bloco dentro do bloco location /ips. Isso ocorre porque os blocos de localização são processados ​​em ordem e a instrução return 404 no bloco de localização externo impedirá que quaisquer solicitações que correspondam ao bloco de localização interno sejam processadas. Portanto, você precisará mover a instrução return 404 dentro do bloco location que corresponde aos URLs com números de porta e alterá-la para retornar 403 ou algum outro código de erro que indique que o URL solicitado não é permitido.

Aqui está um exemplo de como a configuração atualizada pode parecer:

location ~ ^/ips/([0-9]+) {
    proxy_redirect off;
    proxy_pass http://127.0.0.1:$1$request_uri;
    proxy_http_version 1.1;
   

informação relacionada