NestJS で http, https server を2つ同時に起動する方法

NestJS で http, https server を2つ同時に起動する方法をご紹介します。

NestJS

背景 NestJS で http, https サーバーを同時に起動したい

NestJS でローカル環境で SSL/TLS が必要なケースに遭遇したため https server を起動するサンプルコードを書いてみました。

事前準備 ローカル環境用 SSL/TLS サーバ証明書の発行

localhost-key.pem, localhost.pem などの ローカル環境用 SSL/TLS サーバ証明書は mkcert で発行しました。

サンプルコード NestJS http, https servers

NestJS で http, https server を2つ同時に起動する方法は以下の通りです。

import { NestFactory } from '@nestjs/core';
import { ExpressAdapter } from '@nestjs/platform-express';
import { AppModule } from './app.module';
import * as express from 'express';
import * as fs from 'fs';
import * as http from 'http';
import * as https from 'https';

async function bootstrap() {
  const privateKey = fs.readFileSync('/your_path/localhost-key.pem', 'utf8');
  const certificate = fs.readFileSync('/your_path/localhost.pem', 'utf8');
  const httpsOptions = { key: privateKey, cert: certificate };

  const server = express();
  const app = await NestFactory.create(AppModule, new ExpressAdapter(server));
  await app.init();

  http.createServer(server).listen(3000);
  https.createServer(httpsOptions, server).listen(443);
}

bootstrap();

以上、NestJS で http, https server を2つ同時に起動するサンプルコードを書いた、現場からお送りしました。

参考情報