nginx 구성 역방향 프록시는 슬래시 없이 리디렉션 시 기본 경로를 잃습니다.

nginx 구성 역방향 프록시는 슬래시 없이 리디렉션 시 기본 경로를 잃습니다.

URL 경로를 해당 관점 서비스로 리디렉션하는 다음 nginx 구성이 있습니다.

server {
    listen 80;
    server_name abc.com;
    location = favicon.ico { access_log off; log_not_found off }
    
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    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_set_header X-Forwarded-Proto $scheme;
    proxy_cache_bypass $http_upgrade;
    

    location /a-ms/ {
       rewrite /a-ms/(.*) /$1 break;
       proxy_pass http:host.docker.internal:3000/;
    }
    
    location /b-ms/ {
       rewrite /b-ms/(.*) /$1 break;
       proxy_pass http:host.docker.internal:4000/;
    }
    
}

nodejs를 사용하여 API 및 Swagger 문서를 호스팅하는 백엔드 마이크로서비스

브라우저에서 URL에 접근하면 abc.com/a-ms/doc/정상적인 결과가 반환되지만, 예를 들어 슬래시 없이 URL로 이동하면 내가 원하는 것과 다른 abc.com/a-ms/doc경로로 리디렉션됩니다 (위치 경로가 누락됨)(. 이 문제를 어떻게 해결합니까? abc.com/docnginx 구성 설정으로?

답변1

RichardSmith의 사용 제안에 따라프록시_리디렉션이제 내 위치 리디렉션이 정확하고 위치 경로가 포함되었습니다.

location /a-ms/ {
   rewrite /a-ms/(.*) /$1 break;
   proxy_pass http:host.docker.internal:3000/;
   proxy_redirect /doc /a-ms/doc; #add this
}
    
location /b-ms/ {
   rewrite /b-ms/(.*) /$1 break;
   proxy_pass http:host.docker.internal:4000/;
   proxy_redirect /doc /b-ms/doc; #add this
}

관련 정보