[Troubleshooting] Nginx 설정이 배포만 하면 초기화되는 현상 (Docker & GitHub Actions)
·
Docker
1. 문제 상황 (Issue)현상: API 호출 시 400 Bad Request조치 내용: 운영 서버(EC2)에 접속해 Nginx 컨테이너 설정을 수동으로 수정하여 정상 작동을 확인.재발: GitHub Actions를 통해 자동 배포를 진행하면 수정한 설정이 사라지고 다시 에러 발생. 어제 고쳤는데 오늘 다시 터지는 '무한 루프' 상황 발생.2. 원인 분석 (Root Cause)🔍 기술적 원인: 잘못된 Nginx 설정400 에러: proxy_set_header Connection ""; 설정 때문. SSE(Server-Sent Events)를 위해 추가했으나, Spring Boot(Tomcat)는 Connection 헤더가 비어 있으면 보안상 비정상 요청으로 판단해 입구를 차단함.🔍 구조적 원인: G..
[Troubleshooting] 도커 배포 중 발생한 Redis 연결 오류 해결 (쿠키 문제인 줄 알았으나 인프라 문제였던 건에 대하여)
·
Docker
최근 프로젝트를 EC2 운영 환경에 배포하던 중 로컬에서는 정상적이던 로그인이 배포 서버에서만 실패하는 현상을 겪었다. 결론부터 말하면 사소한 포트 번호 오타와 도커 컴포즈의 환경변수 주입 시점 문제였으며 그 해결 과정을 기록으로 남긴다.1. 문제 발생: "로컬은 되는데 배포 환경만 안 된다?"본인은 로컬 개발 시 빠른 피드백과 디버깅을 위해 Spring Boot와 React는 로컬 호스트(Localhost)에서 직접 실행하고 Redis와 DB만 도커 컨테이너로 띄워 사용한다.로컬에서는 Spring이 도커에 뜬 Redis 포트(6379:6379 매핑)를 통해 localhost:6379로 바로 접속하므로 아무런 문제가 없었다. 하지만 모든 서비스를 도커 컨테이너화하여 올린 배포 환경에서는 상황이 달랐다.로..
Docker에서만 API가 401로 실패한다면 꼭 확인해야 할 것
·
Docker
React, Spring Boot, MySQL을 Docker Compose로 묶고 Nginx를 리버스 프록시로 두는 구조를 구성했다.로컬 환경에서는 정상적으로 동작하던 API가 Docker 환경에서 실행하자마자 프론트엔드 요청에 대해 계속 401 에러를 반환했다.백엔드 서버는 분명 실행 중이었고 Spring Security 설정도 permitAll()로 열어둔 상태였다.그래서 처음에는 자연스럽게 이런 생각이 들었다. “401이면 권한 문제잖아?”“그럼 Security 설정이 문제 아닌가?” 401 에러를 보고 처음 들었던 생각내가 알고 있는 401 에러는 명확했다.인증이 안 되었을 때토큰이 없거나 잘못되었을 때권한이 없는 요청일 때그래서 이 상황이 더 이상했다. JWT도 아직 적용하지 않음, 모든 요..
도커(Docker)란?
·
Docker
도커란?도커(Docker)는 애플리케이션을 실행하는 데 필요한 환경을 **컨테이너(Container)**라는 형태로 묶어 언제 어디서나 동일한 환경에서 실행할 수 있게 만들어주는 플랫폼이다.즉 “내 컴퓨터에서는 되는데?” 같은 문제를 해결해주는 강력한 개발·배포 도구다. 도커는 운영체제를 통째로 가상화하지 않고 필요한 실행 환경만 가볍게 격리해서 실행한다는 점에서 기존의 VM과 큰 차이가 있다.Virtual Machine vs Docker도커를 이해하려면 먼저 기존 가상화 방식인 **Virtual Machine(버추얼머신)**과 비교하는 것이 가장 쉽다.Virtual Machine(버추얼머신)버추얼머신은 하드웨어 위에 또 하나의 운영체제(OS)를 통째로 올리는 방식의 가상화 기술이다.구조[Hardware..