Nest.js에서 Ip 조회할 때 IpV6로 표시되는 것을 IpV4로 바꾸기

Posted by , April 01, 2023
NestJs
Series ofNestJs

thumbnail

배포를 하기 전에...

흑우집합소 테섭에 배포를 하고나서 몇 가지 테스트를 진행하던 도중 pm2 로그를 잠시 확인했다.

저기 보면 clientIp라고 되어 있는 곳에 IP가 뜨는데 뭔가 좀 이상했다...
IpV4가 나와야 하는데 IpV6 형식으로 나왔다.

사실 큰 상관은 없을 것 같은데 그래도 서버 내에서 로깅이나 확인할 때 IpV6 형식으로 되어 있다면 불편할 것 같았다.
그래서 이걸 V4 형식으로 바꿨다.

방법은 여러가지가 있지만, 제일 쉽고 아무것도 설치하지 않아도 되는 방식으로 했다.

async function bootstrap() {
  const app = await NestFactory.create(AppModule, { bodyParser: true })

  //Some init

  await app.listen(4000, "0.0.0.0")
  console.log(new Date(), "[SERVER-ON] = ", process.env.NODE_ENV)
}

저렇게 app.listen함수 뒤에 전달인자로 hostname을 전달해주면 된다.
저 함수를 타보면 아래와 같은 형태이다.

/**
     * Starts the application.
     *
     * @param {number|string} port
     * @param {string} [hostname]
     * @param {Function} [callback] Optional callback
     * @returns {Promise} A Promise that, when resolved, is a reference to the underlying HttpServer.
     */
    listen(port: number | string, callback?: () => void): Promise<any>;
    listen(port: number | string, hostname: string, callback?: () => void): Promise<any>;

저 hostname에 ipv4 형식을 문자열로 전달하면 이제 Nest.Js 내에서 ip 주소 표현은 IpV4로 바뀌게 된다.