Nginx 사용기 본문
이번에 혼자 프론트엔드와 백엔드를 만들어, 하나의 인스턴스로 배포하는 과정에서 사용한 Nginx.
이름부터 "엔-진" 이라, 마치 기계 엔진처럼 복잡하고 정교하게 작동할 줄 알았는데, 생각보다 심플해서 놀랐더랬다.
사실 Nginx를 사용하기 직전 여러 고초를 겪었다. 요약하자면 GCP에서 제공하는 부하분산기에서 경로를 설정하면 그 경로에 맞게 요청이 전달될 줄 알았는데 그렇지 못했다는 것. (내가 제대로 설정하지 않았을 가능성도 크다.)
이를 해결하기 위해 듣기만 했던 결국 Nginx를 사용하게 되었다.
- 내가 사용한 방식
1. 먼저 default.conf 파일을 작성해야 하는데 내용은 다음과 같다.
// default.conf
events {} // 이벤트 규정
http {
server {
listen 80;
location /백엔드_엔드포인트 {
proxy_pass 백엔드_URL:PORT;
}
location /프론트엔드_엔드포인트 {
proxy_pass 프론트엔드_URL:PORT;
}
}
}
사용하지 않은 event는 배제한다. (사실 아직 모름)
Nginx는 로드밸런서의 역할로, https(443포트)를 통해 들어온 데이터를 중개하는 역할을 하기 때문에, http(80포트)로 구성된다.
그리고 이때, location 을 통해, 원하는 엔드포인트 => 원하는 URL을 설정하여 중개 경로를 설정할 수 있다.
중요한 점이 있다면, proxy_pass 이후에 들어가는 이름은 docker-compose.yaml 파일에서 작성한 service 이름이어야 한다는 것.
2. 이후 NginX의 dockerfile과 docker-compose.yaml 파일은 다음과 같이 작성하면 된다.
// Dockerfile
FROM nginx:latest // 자신에게 맞는 버전 사용
COPY ./default.conf /etc/nginx/nginx.conf // default.conf 파일을 docker 컨테이너에 복사
// docker-compose
nginx:
image: nginx:latest
build:
context: .
dockerfile: Dockerfile
ports:
- 80:80 // 포트는 80
3. 위와 같이 작성한 뒤 GCP 부하분산기를 통해 들어올 인스턴스의 포트를 80으로 설정하면, nginx로 데이터를 성공적으로 중개할 수 있게 된다.
'개발 > node.js' 카테고리의 다른 글
PostgreSQL 사용기 (feat, docker) (0) | 2023.07.21 |
---|---|
node.js - jwtAuth 미들웨어 구현 (0) | 2023.05.01 |
Node.js - PM2 (0) | 2023.04.20 |
Node.js, 미들웨어 & 라우터 핸들러 (0) | 2023.04.13 |
node.js & graphQL (0) | 2023.04.11 |