1
resposta

Redirecionamento de URL

Bom dia, atualmente estou tentando fazer um redirecionamento de URL e não está dando certo.

Meu cenário é o seguinte:

Ao acessar POST > http://meusite.com.br/user/auth o nginx recebe essa informação e passa pro meu servidor local, que redireciona da seguinte forma

    location / {
        proxy_pass http://localhost:5001;
    }

Até ai está funcionando perfeitamente, o problema é que eu preciso que quem esteja chamando, a partir de agora, coloque /api/... antes do recurso, ficando da seguinte maneira:

http://meusite.com.br/api/user/auth

Eu encontrei uma possível solução na internet, porém ela funciona em partes:

location /api {
        rewrite ^/api(.*)$ $1 permanent;
        proxy_redirect http://localhost:5001/ $1;
        proxy_set_header X-Real-Method $request_method;
   }
    
location / {
        proxy_pass http://localhost:5001;
   }

O problema dessa solução é que ele recebe um POST, e repassa pra frente um GET.

Alguém saberia uma forma de resolver esse problema de redirecionamento?

1 resposta

Oi

O código que você compartilhou indica uma configuração do Nginx para reescrever as URLs redirecionadas. No entanto, você mencionou que a solução atual está redirecionando POSTs para GETs, o que não é o comportamento desejado.

Para resolver esse problema, você pode tentar a seguinte configuração no seu arquivo de configuração do Nginx:

location /api {
    proxy_pass http://localhost:5001;
    proxy_set_header X-Real-Method $request_method;
}

location / {
    proxy_pass http://localhost:5001;
}

Essa configuração irá direcionar todas as solicitações que começam com /api para o servidor local na porta 5001, mantendo o método original da solicitação (POST, GET, etc.). Todas as outras solicitações serão direcionadas da mesma forma para o servidor local.

Certifique-se de reiniciar o serviço do Nginx após fazer as alterações na configuração para que as mudanças tenham efeito.