HTTPS 전환을 마치고 게시판을 열었는데 글 제목과 본문은 그대로이고 개발된 소스도 그대로 입니다. 이미지도 정상인데 HTTP -> HTTPS 전환 후 이미지가 display가 안되는 케이스를 운영 초보때 많이 겪었었습니다. 이런 경우 깨진 사진 한 장을 골라 게시물에 저장된 주소와 브라우저가 실제로 요청한 주소를 나란히 확인해 보십시오. 두 주소가 다르면 어느 쪽을 고쳐야 할지 범위를 좁힐 수 있습니다. 기존 게시물에 남은 HTTP 이미지 주소 게시판 페이지와 본문 이미지는 브라우저가 각각 요청합니다. 게시판을 HTTPS로 전환해도 에디터가 예전 글에 저장한 http:// 이미지 주소는 그대로 남을 수 있습니다. HTTPS 페이지에서 이처럼 보안 연결을 쓰지 않는 리소스를 불러오는 상황..
웹을 운영하면서 게시판 메인은 열리는데 검색 결과 화면만 한참 뒤 504로 반환되는 케이스를 간혹 볼 수 있습니다. 같은 서버가 두 화면을 제공해도 검색 요청은 DB 쿼리나 WAS 단계에서 더 오래 걸릴 수 있습니다. 어느 구간이 느렸는지 확인하려면 Nginx가 응답을 기다린 구간과 게시판 앱이 실제로 요청을 처리한 시간을 따로 봐야 합니다. 여기서는 Nginx가 proxy_pass로 HTTP 앱 서버에 검색 요청을 넘기는 구성을 다룹니다. Nginx가 요청을 넘기는 뒤쪽 서버를 업스트림이라고 부릅니다. 오류 로그에 찍힌 대기 단계 504는 게이트웨이나 프록시가 요청을 마치는 데 필요한 응답을 제때 받지 못했다는 뜻입니다. 브라우저 앞에 로드밸런서나 CDN이 있다면, 요청 시..
게시판에 502가 뜨면 애플리케이션부터 재시작하고 싶어집니다. 그런데 앱이 8081번 포트에서 정상 동작하고 Nginx만 8080번으로 요청을 보내는 상황이라면, 재시작을 반복해도 같은 화면을 보게 됩니다. 이 글은 Nginx와 HTTP 애플리케이션이 같은 Linux 서버에서 실행되고, Nginx 오류 로그에 연결 거절이 찍힌 상황을 다룹니다.오류 로그에 찍힌 목적지Nginx에서 upstream은 요청을 넘겨받는 뒤쪽 서버를 뜻합니다. 브라우저의 502 화면을 확인했다면, 먼저 실패한 요청의 시각과 경로를 기준으로 Nginx 오류 로그를 찾습니다. 아래는 게시판 조회 요청에 대해 구성한 가상 로그입니다.2026/11/06 10:00:10 [error] *42 connect() failed (111: Co..
직원 PC에서 액세스 스위치의 로그인 화면이 열린다면, 비밀번호를 몰라도 그 PC의 요청은 이미 웹 관리 서비스에 닿고 있습니다. CVE-2026-107441은 바로 이 지점에서 문제가 됩니다. 점검 범위는 PC나 무선 접속 장비(AP)가 연결되는 GS1900 스위치 자체의 웹 관리 주소입니다. 웹 관리 CGI의 인증 전 취약점Zyxel은 2026년 11월 3일 처음 공지했고, KISA는 11월 5일 업데이트를 권고했습니다. 웹 관리 요청을 처리하는 CGI에 메모리 범위를 벗어나 쓰는 결함이 있습니다. 제조사 설명에 따르면 LAN 측에서 관리 서비스에 닿을 수 있는 공격자가 로그인 없이 조작한 HTTP 요청으로 운영체제 명령을 실행할 수 있습니다. Zyxel — GS1900 보안 권고 KISA — Zy..
EC2에 IAM 역할을 연결하고 애플리케이션에서 S3 파일을 열어 봅니다. 파일이 정상적으로 열려도 전환이 끝났다고 판단하기는 이릅니다. 코드나 서비스 설정에 남은 액세스 키로 요청했을 수 있기 때문입니다. 이 글은 같은 AWS 계정의 S3에서 정산 파일을 읽는 Python 애플리케이션을 가정해, 어디를 바꾸고 어떤 결과를 확인해야 하는지 살펴봅니다. 역할을 붙인 뒤 서비스의 키 설정을 분리 EC2는 인스턴스 프로파일을 통해 IAM 역할을 연결합니다. 인스턴스 메타데이터 서비스(IMDS)를 사용할 수 있으면 Boto3는 여기서 역할의 임시 자격 증명을 받아 사용하고 만료 전에 갱신합니다. 새 역할을 만들 때는 EC2 서비스가 역할을 맡도록 신뢰 관계를 구성합니다. AWS EC..
EC2 보안 그룹의 인바운드 목록을 보다가 TCP 443의 허용 범위가 넓어진 것을 발견했다고 가정해 보겠습니다. 지금 화면에서는 현재 허용 범위를 읽을 수 있습니다. 변경 시점과 실행에 사용한 자격 증명은 CloudTrail의 EC2 관리 이벤트에서 찾습니다. 같은 그룹에서 여러 규칙이 바뀌었다면, 이벤트 목록의 사용자 이름보다 내가 보고 있는 규칙과 이벤트의 요청 내용이 일치하는지 먼저 확인하는 편이 빠릅니다. AWS CloudTrail — 관리 이벤트 레코드 필드 AWS CloudTrail — userIdentity 요소 Amazon VPC — 보안 그룹 규칙 구성 규칙 하나를 기준으로 이벤트 범위 좁히기 EC2 콘솔에서 보안 그룹이 속한 계정과 리전, 그룹 ID(sg-…)..
실무에서 비밀번호 교체 직후 배치 작업은 DB에 접속하지 못하는데, 이미 실행 중인 웹 서비스에서는 조회가 계속되는 상황을 자주 마주할 수 있습니다. 이때 먼저 볼 것은 실패한 요청이 DB에 새로 로그인했는지입니다. 기존 연결을 재사용한 조회는 새 비밀번호로 인증이 되는지 보여주지 못합니다. 새 연결에서 인증이 실패했다면 Secrets Manager의 현재 버전, DB가 받는 자격 증명, 앱이 실제로 사용한 값 순서로 범위를 좁혀 보세요.현재 버전으로 DB에 새로 접속해 보기먼저 실패한 앱 설정에서 참조하는 시크릿 ARN과 리전, DB 엔드포인트, 접속 계정을 확인합니다. GetSecretValue 요청에 버전 ID와 단계 레이블을 모두 생략하면 Secrets Manager는 AWSCURRENT가 붙은 ..
상품 이미지를 새 파일로 덮어썼는데 홈페이지에는 이전 사진이 남아 있습니다. 이때 전체 캐시부터 비우면 원본 교체 문제인지, 중간에 보관된 복사본 문제인지 구분하기 어려워집니다. 같은 이미지 경로를 유지하는 상황이라면 먼저 원본과 실제 응답을 비교하고, 바꿔야 할 캐시의 범위를 정하는 편이 낫습니다. 원본 교체와 화면 반영 사이의 세 지점이 글은 원본 저장소 앞에 CloudFront를 두고, 같은 경로의 이미지 파일을 교체하는 구성을 예로 들겠습니다. 원본은 실제 파일을 제공하는 저장소나 웹서버이며, CloudFront의 엣지 캐시는 이용자가 물리적으로 가까이 있는 CDN에서 응답 복사본을 보관합니다. 브라우저에도 별도의 복사본이 남을 수 있습니다.먼저 개발자 도구의 Network에서 화면이 실제로 요..
복원한 RDS가 available로 표시됩니다. 그런데 서비스에서 조회한 데이터는 여전히 기존 DB의 내용으로 보이는 경우가 간혹 있습니다. 복원 작업 시 진행 상태만 보고 애플리케이션까지 새 DB로 옮겨 갔다고 판단하면, 정작 뭘 확인해야될지 확인해야 할 접속 대상이 빠집니다.복원 완료와 접속 전환의 차이AWS의 스냅샷 복원 문서에 따르면 DB 스냅샷 복원은 기존 인스턴스를 덮어쓰는 방식이 아니라 DB 인스턴스를 새로 만드는 작업입니다. 따라서 기존 주소로 직접 접속하는 애플리케이션은 새 DB를 사용하도록 별도로 config를 변경해줘야 합니다. 여기서는 일반 RDS DB 인스턴스의 직접 연결을 기준으로 설명하며, Aurora나 프록시를 통한 연결은 구성을 따로 확인해야 합니다.먼저 복원 목적을 정합니..
실무를 하다보면 S3에서 파일을 지웠는데 저장 비용이 좀처럼 줄지 않는 상황을 이 글을 읽는 여러분도 종종 겪을 수 있습니다. 객체 목록은 비어 있는데 청구 내역에는 금액이 있다면, 먼저 삭제가 어떤 상태를 만들었는지 살펴볼 차례입니다. 이 글은 버전 관리가 활성화된 일반 목적 버킷을 기준으로 현재 버전·이전 버전·삭제 마커를 구분합니다.목록에서 사라진 파일과 남아 있는 버전버전 관리는 같은 객체 키에 여러 버전을 보관하는 기능입니다. 버전 ID를 지정하지 않고 삭제하면 S3는 삭제 마커를 현재 버전으로 추가하고, 삭제 직전의 데이터는 이전 버전으로 남깁니다. 일반 목록에서 파일이 사라졌다는 사실만으로 저장 데이터까지 없어졌다고 판단하기 어려운 이유입니다.가령 같은 키에 100MB 파일을 두 번 올린 뒤..