Nginx - 하위 폴더의 노드 API 및 /의 정적 파일

Nginx - 하위 폴더의 노드 API 및 /의 정적 파일

/api/하위 폴더에서 내 API 서버(노드에서 실행)에 액세스 하고 다른 모든 요청을 내 각도 앱으로 보낼 수 있기를 원합니다 .

현재 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경로 에 두 번째 위치 블록을 추가하면 시작 하는 모든 URI가 프록시로 /api/전송되고 다른 모든 항목은 각도 앱으로 전송됩니다./api/

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이에 대한 자세한 내용은

관련 정보