글

라벨이 nginx인 게시물 표시

아이패드 크롬에서만 로그인이 안 돼요 — nginx, 로드밸런서, 그리고 사라진 https

"아이패드 크롬만 로그인이 안 돼요" — 특정 기기 버그 추적기와 Nginx 트랩 iOS 크롬과 HSTS 캐시, 그리고 Nginx absolute_redirect가 만들어낸 로드밸런서 HTTPS 다운그레이드 해결기 "갤럭시 탭 크롬은 되고요, 아이패드 사파리도 되는데, 아이패드 크롬만 로그인이 안 돼요." 운영하다 보면 이런 신고가 제일 골치 아픕니다. 특정 브라우저, 특정 기기에서만 재현되는 버그. 코드를 아무리 들여다봐도 "브라우저마다 다르게 동작할 이유"가 안 보이거든요. 이 글은 그 신고 한 건이 사실은 Nginx가 로드밸런서 뒤에서 HTTPS를 HTTP로 떨어뜨리던 고전적인 인프라 함정이었다는 걸 추적한 기록입니다. 1. 현상 파악: 골치 아픈 특정 환경 재현 버그 관리자 대시보드에서 다른 시스템으로 넘어가는 로그인 버튼이 있는데, 이게 특정 환경에서만 실패했습니다. 🔍 환경별 재현 결과: 📱 아이패드 크롬: 실패 ❌ 📱 아이패드 사파리: 성공 ⭕ 🤖 갤럭시탭 크롬: 성공 ⭕ 💻 PC (모든 브라우저): 성공 ⭕ "크롬 문제다"라고 단정하기엔 갤럭시 크롬은 멀쩡합니다. "iOS 문제다"라고 하기엔 사파리는 됩니다. 딱 iOS × 크롬 교집합에서만 터지는 기괴한 상황이었습니다. 2. 로그 분석: 결정적 차이 (Referer) 증상이 아니라 데이터를 봅니다. 백엔드 Referer 검증 로그를 실패/성공 케이스로 나란히 놓으니 결정적 차이가 한 줄에 드러났습니다. ❌ 아이패드 크롬 (실패 로그) referer: http://app.example.com/ ← http, 그리고 루트 경로 허용목록: ['https://adm...