Nginx - API узла в подпапке и статические файлы в /

Nginx - API узла в подпапке и статические файлы в /

Я хочу иметь возможность доступа к своему серверу API (работающему на узле) из подпапки /api/и отправлять все остальные запросы моему приложению Angular.

В настоящее время API работает на другом поддомене, и моя конфигурация выглядит следующим образом:

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

Я попробовал изменить местоположение API на /api/вместо , /но тогда я не могу получить доступ к своему приложению.

Не хочу обслуживать статические файлы с узла, поэтому, пожалуйста, не предлагайте этого.

решение1

Я предполагаю, что вы хотите обслуживать http://app.site.com/api/xxxДобавление второго блока местоположения для вашего /api/пути будет отправлять любой URI, начинающийся с , /api/на прокси-сервер, а все остальное — в ваше приложение 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;
  }
}

Конфигурация прокси не удалит /api/ из пути, и URI будет представлен полностью вашему серверу API. Это контролируется завершающим слешем в proxy_pass http://localhost:3000/. См.https://stackoverflow.com/questions/22759345/nginx-trailing-slash-in-proxy-pass-urlдля получения более подробной информации об этом.

Связанный контент