
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;