기존 JDK를 지우지 않고 JDK 11로 빌드하기: SDKMAN이 PATH를 가로채는 원리

로컬은 Corretto 21인데 빌드 테스트는 JDK 11이 필요할 때, SDKMAN이 기존 JDK를 건드리지 않고 PATH 우선순위만 가로채 세션 단위로 버전을 바꾸는 원리와 기존 JDK를 처리하는 세 가지 선택

2025년 7월 24일 · 4 분

쉘 스크립트 대신 Dockerode를 고른 이유: 멀티 테넌트 프로비저닝의 롤백과 동시성

docker run을 감싼 쉘로는 실패 원인도 롤백도 다룰 수 없어 Dockerode와 스키마 분리로 테넌트 생성을 자동화한 과정

2025년 7월 14일 · 6 분

Nginx Proxy Manager API로 Proxy Host 자동으로 붙이기

테넌트가 생길 때마다 손으로 하던 도메인 연결을 Nginx Proxy Manager API로 Proxy Host를 만들어 자동화했다.

2025년 7월 5일 · 2 분

ModSecurity가 ?data=test를 403으로 막기까지

Ubuntu 컨테이너의 Nginx에 ModSecurity를 붙이고, test가 든 요청만 403으로 막히는 것을 access log와 audit log로 확인했다.

2024년 8월 12일 · 4 분

ModSecurity는 SQL Injection을 점수로 막는다

Docker로 ModSecurity WAF를 띄우고 SQL Injection 요청이 403으로 막히는 과정을 로그의 Anomaly Score로 따라가 본 실습 기록

2024년 7월 30일 · 3 분

MyBatis bind 태그는 Enum을 부를 때 쓸모가 있다

MyBatis 의 쓸모는 쿼리로도 되는 계산보다 Enum 메서드 반환값을 SQL로 끌어와 하드코딩을 없애는 데 있었다.

2024년 7월 11일 · 3 분

Nginx 한 대로 시험한 ELK를 Nginx Proxy Manager에 합치기

Nginx 컨테이너로 로그 전달 경로를 먼저 확인하고, 같은 볼륨 공유 방식으로 Nginx Proxy Manager에 ELK를 합쳐 ModSecurity 로그를 Kibana에 쌓았다.

2024년 7월 7일 · 8 분

Nginx Proxy Manager - Official Guide & Local Setup for Customization

커스텀을 위해 코드 수정 후 Nginx Proxy Manager를 정상적으로 실행할 수 있어야했는데, 그 어디에서도 이를 위한 가이드를 찾을 수 없었다. 결국 직접 소스코드 분석 후 다음과 같은 내용들을 확인했다.

2024년 7월 5일 · 3 분

requirements.txt 대신 Poetry로 의존성 관리

개발용과 배포용 패키지가 섞이는 requirements.txt 대신 Poetry로 의존성과 가상 환경을 관리하는 명령어를 정리했다.

2024년 5월 4일 · 2 분

Maven import 에러에서 먼저 볼 것은 버전이다

IntelliJ Maven Sync가 jar:unknown 의존성을 못 찾을 때 -U 강제 업데이트와 pom.xml 버전 명시로 푼 기록.

2024년 3월 20일 · 2 분