Nginx - API do nó em subpasta e arquivos estáticos em /

Nginx - API do nó em subpasta e arquivos estáticos em /

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/xxxAdicionar 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.

informação relacionada