Quero poder acessar meu servidor API (em execução no nó) a partir de uma subpasta /api/
e enviar todas as outras solicitações para meu aplicativo angular.
Atualmente, a API está sendo executada em um subdomínio diferente e minha configuração é semelhante a esta –
server {
listen 80;
server_name appapi.site.com;
location / {
proxy_pass http://localhost:3000/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 1800;
proxy_connect_timeout 1800;
}
}
server {
listen 80;
server_name app.site.com;
index index.html;
root /var/www/html/app.site.com/;
location / {
try_files $uri /$uri /index.html;
}
}
Tentei alterar o local da API /api/
em vez de, /
mas não consigo acessar meu aplicativo.
Não quero servir arquivos estáticos do nó, então não sugira isso.
Responder1
Presumo que você queira servir. http://app.site.com/api/xxx
Adicionar um segundo bloco de localização para o seu /api/
caminho enviará qualquer URI começando com /api/
para o proxy e qualquer outra coisa para o seu aplicativo angular.
server {
listen 80;
server_name app.site.com;
index index.html;
root /var/www/html/app.site.com/;
location / {
try_files $uri /$uri /index.html;
}
location /api/ {
proxy_pass http://localhost:3000/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 1800;
proxy_connect_timeout 1800;
}
}
A configuração do proxy não removerá /api/ do caminho e o URI será apresentado por completo ao seu servidor API. Isso é controlado pela barra final em proxy_pass http://localhost:3000/
. Referir-sehttps://stackoverflow.com/questions/22759345/nginx-trailing-slash-in-proxy-pass-urlpara obter mais informações sobre isso.