Next.js 터보팩 + HTTPS 개발 서버 사용하기

Welcome file

기본값은 HTTP

Next.js의 개발 서버 기본값은 HTTP이다. Turbopack을 사용하든 사용하지 않든 마찬가지. 리액트도 역시 HTTP이다. 그렇다면 도대체 어떻게 HTTPS를 사용해야 할까?
보안도 물론 엄청나게 중요하지만, 개발 측면에서 볼 때 HTTP 프로토콜을 사용하면 클립보드, CORS, 인증, …등등 다양한 HTTPS를 요구하는 기능을 사용하지 못하게 된다.

server.js?

구글링에서 가장 먼저 찾은 것은 server.js를 사용해 Custom Server를 만들라는 내용이었다. 문제는, 이렇게 되면 터보팩을 사용하는 의미가 사라진다. 터보팩을 사용하지 않는 사람들은 써볼만 한 옵션일지도?
구글에 관련 자료를 검색하면 다양한 방법이 나오니 참고하길 바란다.

local-ssl-proxy

내 경우에는 터보팩을 사용해야만 의미가 있는 상황이기에 더 깊게 구글링 하던 도중 local-ssl-proxy라는 키워드를 찾았다. 알아보니 local-ssl-proxy(이하 프록시)가 소스 포트에서 동작하면서 타겟 포트로 들어온 트래픽을 HTTPS로 변환해주는 동작을 하는 것 같았다. 전문 분야가 아니라 설명이 이상해도 양해 바란다.

아무튼, npm -i -g local-ssl-proxy 명령어를 입력해 전역으로 프록시를 설치하고, 인증서는 기존에 사용하던 pem들을 쓰려고 했으나 왜인지 bad decrypt 예외가 계속 발생했다.

Passphrase

이유는 패스프레이즈 때문이었다. 해당 PEM 인증서는 패스프레이즈가 걸려있었는데 이걸 그만 깜빡한 것이다.
때문에 win-acme를 사용하여 새 PEM을 만들고 이를 다음과 같이 적용하니 정상적으로 로컬 뿐 아니라 외부에서 역시 HTTPS로 잘 접속이 되는 것을 확인하였다.

"scripts": {  
    ...
    "ssl-proxy": "local-ssl-proxy --source 3001 --target 3000 --key honsal.be-key.pem --cert honsal.be-crt.pem"  
},
pnpm ssl-proxy
> local-ssl-proxy --source 3001 --target 3000 --key honsal.be-key.pem --cert honsal.be-crt.pem

Started proxy: https://localhost:3001 → http://localhost:3000

댓글

이 블로그의 인기 게시물

C# 남아도는 메모리에도 불구하고 OutOfMemoryException이 발생한다면?

MySQL 데이터 타입과 Java 데이터 타입 비교/매칭

테일즈위버 OST 전곡 모음