Proxy de todas as solicitações para o servidor back-end

Proxy de todas as solicitações para o servidor back-end

Atualmente tenho um aplicativo Angular que obtém seus dados de um back-end do Symfony. Ao desenvolver, usei o ng servesistema proxy do servidor de desenvolvimento para redirecionar as /apirotas /oauth-tokene /mediapara o servidor back-end, e funcionou bem.

Agora que quero implantar o aplicativo em um servidor web, configurei um servidor Nginx que serve os arquivos estáticos gerados pelo aplicativo Angular construído. Como o servidor de desenvolvimento não existe mais para fazer proxy das solicitações, tenho que fazer isso por meio dos arquivos conf do Nginx para ter um proxy reverso funcional.

O que eu simplesmente preciso é que, se eu solicitar algo como GET http://localhost/api/products/1, essa solicitação seja enviada por proxy GET http://localhost:81/api/products/1. Deve ser o mesmo para todos os outros métodos de solicitação: POST, PUT, PATCH, etc.

O problema é que não consigo escrever um arquivo conf que atenda às minhas necessidades para este caso de uso. O melhor que consigo é uma resposta 302 ou 405.

Aqui está o arquivo conf que tenho atualmente:

server {
    server_name localhost;
    root /var/www/webapp;

    location / {
        try_files $uri $uri/ /index.html;
    }

    location ~ ^/(?:oauth-token|api|media)/ {
        proxy_pass http://localhost:81;
    }
}

O backend está hospedado no mesmo servidor e instância do nginx que o frontend, mas em uma porta diferente (porta 81 em vez de 80).

Tentei separar meu bloco de localização em três blocos separados para cada rota, caso meu regex ou passagem de proxy estivesse errado, mas obtive os mesmos resultados:

    location /api/ {
        proxy_pass http://localhost:81/api/;
    }

    location /oauth-token/ {
        proxy_pass http://localhost:81/oauth-token/;
    }

Também tentei remover as barras finais no final do URL da passagem do proxy para ver se esse era o problema, sem sucesso.

Tentei seguir os conselhos que encontrei em outras postagens sobre Server Fault, mas infelizmente nenhum funcionou para mim.

Você pode me ajudar a configurar este arquivo para que essas solicitações de API sejam enviadas por proxy para meu servidor back-end? Obrigado.

informação relacionada