클라이언트가 서버로 들어가기 전
Nginx(Proxy)를 이용하여 Front와 Backend서버로 나눠 주는 역할을 한다
의문점) 그럼 Nginx는 레스트플한 api 역할을 하는건가?.. alb..와 같이?
nginx >
default.conf : 환경설정
Dockerfile : 운영환경
Dockerfile.dev의 개발환경과 운영서버가 동일 하므로 dev는 뺸다.
# 3000번 포트에서 frontend가 돌아가고 있다는 것을 명시
upstream frontend{
server frontend:3000;
}
# 5000번 포트에서 backend서버가 돌아가고 있다는 것을 명시
upstream backend {
server backend:5000;
}
# nginx 서버 80번으로 열기
server {
listen 80;
}
''' 로케이션에는 우선 순위가 있는데 / 되는것만 우선순위가 가장 낮다. 그래서 여기서는 /api 로 시작하는 것을 먼저 찾고
그게 없다면 / 이렇게 시작되는 것이니 요청을 http://frontend로 보자
'''
location / {
proxy_pass httpL//frontend;
}
'''
/api로 들어오는 요청을 http://backend로 보내줍니다.
'''
location /api {
proxy_pass http//backend;
}
# 이 부분이 없다면 sockjs-node failed: Error가 나온다
location /sockjs-node {
proxy_pass http://frontend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}