Pesquisei bastante e ainda não encontrei uma solução que funcione para o meu problema ...
Temos um aplicativo NodeJS que é um aplicativo Express que expõe uma API REST em localhost:3000. Também temos um aplicativo AngularJS que é construído (ng build --prod) e servido pelo Nginx. Em uma máquina local, tudo funciona bem. Quando o coloco em produção, o aplicativo Angular não consegue acessar nenhum dos endpoints da API.
Saída do console do desenvolvedor
Inicialmente, pensei que isso poderia ser um problema de CORS, então ajustei minha configuração do Nginx para ser a seguinte:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain; charset=utf-8';
add_header 'Content-Length' 0;
return 204;
}
if ($request_method = 'POST') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
}
if ($request_method = 'GET') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
}
}
}
Isso não resolveu o problema. Não há informações em nenhum dos logs do Nginx e posso acessar com êxito a API REST via curl quando estiver conectado ao servidor. Estou preso. Qualquer ajuda é apreciada.
Responder1
Acontece que o Angular não consegue resolver o host local, mas usar 127.0.0.1 funciona perfeitamente.