전체 글(376)
-
[Linux] Ubuntu 리눅스 서버에 HTTPS(SSL) 적용하는 전체 과정 정리
Ubuntu + Nginx 환경 기준으로, 무료 SSL 인증서(Let's Encrypt, Certbot)를 이용해 HTTPS를 적용하는 방법을 단계별로 정리했습니다. 1. 도메인 DNS 설정먼저, 사용 중인 도메인이 서버 IP를 바라보고 있어야 합니다.즉, 카페24에서 도메인을 구매했다면, 나의서비스관리에 들어가 해당 구매한 도메인을 대표 도메인 설정 및 연결 적용하고 진행해야 합니다.도메인을 구매한 사이트(가비아, 닷네임, 호스팅케이알 등)에 접속DNS 관리 메뉴에서 A 레코드 설정@ A 서버IPwww A 서버IP예: 123.123.123.123 과 같이 실제 서버 공인 IP로 설정설정 후 전파까지는 보통 최대 10분 ~ 1시간 정도 소요ping 도메인.com 명령으로..
2025.12.07 -
[Nest] Solapi 를 활용한 SMS 기능 구현
Solapi + NestJS 문자 발송 연동 방법 | 웹 문의 → 관리자 휴대폰 문자 알림 구현이 글에서는 웹사이트의 문의 내용을 자동으로 관리자의 휴대폰 문자(SMS)로 보내는 기능을 Solapi 문자 API + NestJS로 구현하는 방법을 정리합니다.고객은 웹에서 문의를 남기고, 관리자는 휴대폰 문자로 확인한 뒤 바로 답장할 수 있는 방식입니다.📌 전체 동작 흐름고객이 웹 문의 폼에서 이름 · 연락처 · 문의 내용을 입력프론트엔드가 백엔드 POST /contact API 호출NestJS가 내용을 수신 후 Solapi를 통해 관리자 휴대폰 번호로 문자 전송관리자는 문자 수신 → 내용 확인 후 고객 연락처로 바로 문자 답장특징: 문의 저장 / DB 저장 / Webhook 처리 없이 가장 단순한 형태의..
2025.12.02 -
JWT 토큰 저장 전략: AccessToken, RefreshToken 관리(쿠키 vs 로컬스토리지)
프론트엔드와 백엔드(JWT 인증 구조) 환경에서 액세스 토큰과 리프레시 토큰을 안전하고 실용적으로 관리하는 방법을 정리했습니다. 전제 구조일반적인 JWT 인증 플로우는 다음과 같습니다.[사용자 로그인]↓백엔드가 AccessToken + RefreshToken 발급↓AccessToken : 유효기간 짧음 (예: 15분)RefreshToken : 유효기간 김 (예: 2주~1개월)↓AccessToken 만료 시 → RefreshToken으로 재발급 요청이때 토큰 저장 위치 선택지는 아래 세 가지로 나뉩니다.① localStorage / sessionStorage② Cookie (HttpOnly)③ 메모리 + Cookie 혼합 각 방식 비교구분localStorageHttpOnly Cookie메모리 + Cooki..
2025.11.08 -
[Linux] 블루/그린 무중단 배포에서 Next.js .env 다루기
!! 환경: Ubuntu 22.04, Node.js 22 LTS, Next.js 15, React 19, Nginx, systemd 두괄식 요약 (하하...)NEXT_PUBLIC_* 변수는 빌드 시점에만 주입된다. → 빌드 전에 환경변수를 설정하거나 .env.production을 사용해야 한다.런타임 전용 변수(DB, 토큰 등)는 서버의 EnvironmentFile에서 읽어 systemd로 주입한다..env는 코드/릴리스와 분리하고 서버의 고정 경로(예: /etc//.env)에서 관리한다.블루/그린 전환 시에는 정적 자산(.next/static + public)과 .next/BUILD_ID까지 함께 동기화해야 한다. 왜 NEXT_PUBLIC_*는 안 바뀌는가?NEXT_PUBLIC_* 접두사가 붙은 변수..
2025.10.13 -
[Docker] 리눅스에서 Docker로 Next.js + Spring Boot(Gradle) + MySQL 개발환경 구축 & 발생했던 트러블슈팅 총정리
!!! Gradle 기반 Spring Boot + Next.js + MySQL 개발용 Docker 환경 (Café24/EC2 포함) 구축 !!!Docker Compose Next.js Spring Boot (Gradle) MySQL / MariaDB Café24 / EC2리눅스 서버(온프레미스, Café24, AWS EC2 등)에서 Next.js(프론트), Spring Boot(백엔드, Gradle), MySQL을 컨테이너로 분리해 로컬 개발감각의 hot-reload 환경을 만드는 방법과, 실전에서 꼭 마주치는 오류 해결법을 HTML 모드로 정리했습니다.목차1. 디렉토리 구조2. docker-compose.dev.yml (개발용)3. Dockerfile 예시 (Frontend/Backend)4. Next..
2025.10.12 -
[에러] Git 에러: fatal: Not possible to fast-forward, aborting.
[Reason] fatal: Not possible to fast-forward, aborting.이 에러는 로컬 브랜치와 원격 브랜치가 서로 다른 커밋 이력(분기)을 가질 때 발생합니다.즉, 로컬에서 commit 을 되돌리고 원격에서는 그대로 git이 유지된 상태라면 다른 commit 이력들로 매칭되지 않기 때문에 발생됩니다. [Solution]우선 의미부터 알아보겠습니다. 1) 에러의 의미Git이 fast-forward(단순히 브랜치 포인터만 앞으로 이동하는 방식)로는 당겨올 수 없는 상황임을 뜻합니다.즉, 원격(origin/브랜치)에만 있는 커밋과 로컬(HEAD)에만 있는 커밋이 동시에 존재해 이력이 분기(diverged)된 상태입니다.또는 git pull --ff-only나 pull.ff onl..
2025.09.22