Nginx: API de nodo en subcarpeta y archivos estáticos en /

Nginx: API de nodo en subcarpeta y archivos estáticos en /

Quiero poder acceder a mi servidor API (que se ejecuta en el nodo) desde una subcarpeta /api/y enviar todas las demás solicitudes a mi aplicación angular.

Actualmente, la API se ejecuta en un subdominio diferente y mi configuración se ve así:

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;
  }
}

Intenté cambiar la ubicación de la API /api/en lugar de /pero luego no puedo acceder a mi aplicación.

No quiero servir archivos estáticos desde el nodo, así que no lo sugiera.

Respuesta1

Supongo que desea servir. http://app.site.com/api/xxxAgregar un segundo bloque de ubicación para su /api/ruta enviará cualquier URI que comience /api/al proxy y cualquier otra cosa a su aplicación 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;
  }
}

La configuración del proxy no eliminará /api/ de la ruta y el URI se presentará completo en su servidor de API. Esto está controlado por la barra diagonal final en proxy_pass http://localhost:3000/. Referirse ahttps://stackoverflow.com/questions/22759345/nginx-trailing-slash-in-proxy-pass-urlpara más información sobre esto.

información relacionada