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