목차
개요
AWS-EC2에 Nginx의 Reverse Proxy를 이용해 FastAPI와 연계해 놓은 구성에 추가로 FastAPI를 등록해서 사용해야 한다.
이때 추가로 등록하고자 하는 FastAPI는 기존에 연계해 놓은 FastAPI가 아닌 전혀 다른 프로젝트를 기반으로 하는 것이다.
1. 도식
아래는 이해를 돕기 위해 기존에 등록한 구성의 도식이다.
만약 "http://www.example.com/"를 입력하면 먼저 설정해 놓은 "A-Service"로 라우팅 된다. A-Service의 Wroker를 증가시킴으로써 Nginx의 Upstream의 구성이 달라질 수는 있겠지만 위 도식은 일반적인 예제를 그린 것이다. 이러한 설정에 다음과 같은 구성을 추가적으로 설정하려 한다.
개요에서 언급한 상황이 위와 같은 상황이다. "http://www.example.com/aaa"라는 경로를 통해 새롭게 등록한 B-Service로 접근이 가능해야 한다.
2. 고려해 볼 만한 것
FastAPI Server를 실행하면 api 문서 주소와 연계된 "docs"라는 경로가 제공된다. 이는 곧 새롭게 등록한 "B-Service"의 docs도 확인할 수 있어야 한다.
그러나 "docs"는 경로는 root url을 바라보기에 "aaa"로 라우팅이 제대로 설정되지 않는다면 A-Service의 API 문서의 경로로 접근될 것이다.
3. Configuration
다음은 위와 같은 상황에서 필자가 설정한 nginx.conf 파일의 일부이다.
upstream api {
server 127.0.0.1:3301; # http://www.example.com
}
server {
listen 80;
location / {
proxy_pass http://api/;
}
location ^~ /aaa/ {
proxy_pass http://localhost:3302/; # http://www.example.com/aaa
}
}
4. 마치며
사실 "전혀 다른 프로젝트라면 EC2를 새로 생성하면 되지 않나"라는 부분도 고려를 해봤지만 AWS-EC2의 instance 수가 증가하는 것이기 최대한 기존의 자원을 이용하는 방법을 선택했다.
'Server > NGINX' 카테고리의 다른 글
[NGINX] 504, Gateway Time-Out (1) | 2023.12.02 |
---|