본문 바로가기

Nginx 사용기 본문

개발/node.js

Nginx 사용기

자전하는명왕성 2023. 7. 5. 22:17

 

이번에 혼자 프론트엔드와 백엔드를 만들어, 하나의 인스턴스로 배포하는 과정에서 사용한 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
Comments