본문 바로가기
개발정리 (nodeJS)

[nodeJS] 서버 구축 시 주의사항 5가지

by 할리갈리0 2023. 6. 8.

1. 에러 처리

모든 미들웨어와 라우트 핸들러에서 발생할 수 있는 에러를 처리하고 사용자에게 적절한 응답을 전달해야 함.

Express에서는 에러 처리 미들웨어를하여 중앙 집중식 에러 처리를 구현 가능

// 정상 처리 미들웨어 예시
app.get("/", (req, res, next) => {
  // 에러 발생 시, next 함수에 에러를 전달합니다.
  if (someError) {
    return next(new Error("Something went wrong!"));
  }

  res.send("Hello World!");
});

// 에러 처리 미들웨어
app.use((err, req, res, next) => {
  console.error(err);
  res.status(500).send("Server encountered an error!");
});

 

2. 로깅

서버의 동작과 요청 처리 로그를 기록하고 관리해야 함.

 morgan 이용해서 서버 console창에서 log 쉽게 확인 가능

npm install morgan
const morgan = require("morgan");

// 로깅을 위한 미들웨어 설정
app.use(morgan('combined')); // 배포환경일 때
// app.use(morgan('dev')); // 개발환경일 때

 

3. 보안

취약점을 최소화를 위해 보안 설정을 적용해야 함.

express에서는 helmet 미들웨어를 사용 기본적인 보안 설정을 적용 가능

(Express 사용시 Http 헤더 설정을 자동으로 바꾸어 웹 취약성으로부터 서버를 보호해주는 보안 모듈)

npm install helmet
const helmet = require("helmet");

// 보안 미들웨어
app.use(helmet());

app.use(helmet.noCache());
app.use(helmet.frameguard());

* 주의 : app.use(helmet()); 만 설정 할 경우 기본적인 보안(X-Powered-By 등)만 설정

csp, expectCt, hpkp, noCache, referrerPplicy는 별도로 설정 필요

 

 

4. 정적 파일

서버에서 정적 파일(이미지, 스타일시트, 스크립트 등)을 제공할 때 express.static 미들웨를 사용

app.use(express.static("public"));

 

5. 환경 변수와 설정 분리

애플리케이션의 환경별 설정(포트 번호, 데이터베이스 연결 정보 등)을 코드에서 분리하여 관리

dotenv 패키지를 사용하여 쉽게 구현 가능 (root 폴더에 .env 파일 생성하기)

npm install dotenv
/*.env*/

PORT=3000
require("dotenv").config();

const PORT = process.env.PORT

 

 

이렇게 주요 관심사에 맞게 코드와 설정을 분리하고, 미들웨어를 적절히 사용하면, 유지 관리가 쉬운 안전한 Node.js 서버를 구축할 수 있습니다.

반응형