모든 요청을 백엔드 서버로 프록시

모든 요청을 백엔드 서버로 프록시

현재 Symfony 백엔드에서 데이터를 가져오는 Angular 앱이 있습니다. 개발할 때 , 및 경로 를 백엔드 서버로 ng serve리디렉션하기 위해 개발 서버 프록시 시스템을 사용했는데 제대로 작동했습니다./api/oauth-token/media

이제 앱을 웹 서버에 배포하려고 하므로 빌드된 Angular 앱에서 생성된 정적 파일을 제공하는 Nginx 서버를 설정했습니다. 개발 서버가 더 이상 요청을 프록시 처리할 수 없기 때문에 Nginx의 conf 파일을 통해 이 작업을 수행하여 기능적인 역방향 프록시를 확보해야 합니다.

나에게 필요한 것은 과 같은 것을 요청하면 GET http://localhost/api/products/1이 요청이 로 프록시된다는 것 입니다 GET http://localhost:81/api/products/1. 이는 다른 모든 요청 방법(POST, PUT, PATCH 등)에서도 동일해야 합니다.

문제는 이 사용 사례에 대한 내 요구 사항에 맞는 conf 파일을 작성할 수 없는 것 같다는 것입니다. 내가 얻는 가장 좋은 응답은 302 또는 405 응답입니다.

현재 가지고 있는 conf 파일은 다음과 같습니다.

server {
    server_name localhost;
    root /var/www/webapp;

    location / {
        try_files $uri $uri/ /index.html;
    }

    location ~ ^/(?:oauth-token|api|media)/ {
        proxy_pass http://localhost:81;
    }
}

백엔드는 프런트엔드와 동일한 서버 및 nginx 인스턴스에서 호스팅되지만 포트는 다릅니다(80 대신 포트 81).

내 정규식이나 프록시 패스가 잘못된 경우를 대비해 내 위치 블록을 각 경로에 대해 3개의 개별 블록으로 분리하려고 시도했지만 동일한 결과를 얻었습니다.

    location /api/ {
        proxy_pass http://localhost:81/api/;
    }

    location /oauth-token/ {
        proxy_pass http://localhost:81/oauth-token/;
    }

또한 이것이 문제인지 확인하기 위해 프록시 패스 URL 끝에 있는 슬래시를 제거하려고 시도했지만 소용이 없었습니다.

Server Fault의 다른 게시물에서 찾은 조언을 따르려고 노력했지만 슬프게도 어떤 것도 나에게 도움이 되지 않았습니다.

이러한 API 요청이 내 백엔드 서버로 프록시되도록 이 파일을 구성하는 데 도움을 주실 수 있나요? 감사해요.

관련 정보