클라우드플레어 터널, 퀵 터널, 웹훅, 카카오 콜백 | localhost를 콘솔에 못 넣을 때 어디를 여나?
카카오 리다이렉트와 토스 웹훅은 localhost를 거절하는 달이 많다. 공유기 포트 대신 클라우드플레어 터널로 노트북에서 밖으로만 연다. 퀵 터널은 주소가 매번 바뀌고, 콘솔 고정값은 자기 서브호스트다. Next.js 허용 개발 오리진, 웹훅 서명, 엔그록 무료 한도를 개발자, API, 데브옵스, 클라우드 기준으로 나눈다.
카카오 로그인 리다이렉트와 토스 웹훅은 콘솔에 https 공개 주소를 넣으라고 합니다. localhost는 거절되는 달이 많습니다. 집 공유기 뒤에 포트를 열지 말고, 클라우드플레어 터널로 노트북에서 밖으로만 연결합니다. 퀵 터널은 계정 없이 한 줄이면 됩니다. 주소는 켤 때마다 바뀝니다. 콘솔에 고정할 값은 대시보드에서 호스트를 붙인 터널입니다. 웹훅이 두 번 오면 멱등 글에, 사파리 쿠키는 세임사이트 글에 있습니다.
12개 사이트를 돌리며 저는 카카오와 토스 콜백을 이렇게 열었습니다. 퀵 터널로 한 번 확인하고, 콘솔에 넣을 주소만 고정 호스트로 바꿉니다. 숫자는 2026년 8월 클라우드플레어 공식 문서 기준입니다.
카카오 콘솔이 localhost를 거절하는 이유
국내 콘솔 상당수는 루프백 주소를 콜백으로 받지 않습니다. 사업자 서버가 당신 노트북의 3000번 포트에 닿을 수 없기 때문입니다.
카카오 디벨로퍼스 리다이렉트 유알아이, 네이버 로그인 콜백, 토스페이먼츠 웹훅 유알엘은 보통 https로 시작합니다. http localhost는 저장 단계에서 막히거나, 저장돼도 실제 콜백이 타임아웃입니다. 아파트 공유기에 포트포워딩을 열면 잠깐은 됩니다. 공인 아이피가 바뀌고, 공유기 관리 비번이 약하면 노트북이 그대로 노출됩니다. 저는 그 길을 쓰지 않습니다.
터널은 반대입니다. 노트북이 클라우드플레어로 밖으로만 붙습니다. 인바운드 포트를 열지 않습니다. 공식 문서도 제한된 방화벽이면 7844번이 밖으로 나가는지만 보라고 적습니다. 공유기 포트 칸을 만질 자리가 아닙니다.
갈래
콘솔에 넣는 값
공유기
언제 쓰나
localhost
거절되거나 콜백이 안 옴
안 염
브라우저만 보는 화면
공유기 포트포워딩
집 공인 아이피 + 포트
인바운드 염
쓰지 않음
퀵 터널
랜덤 트라이클라우드플레어 주소
안 염
5분 확인, 콘솔 고정 금지
고정 호스트 터널
자기 도메인 서브호스트
안 염
카카오, 토스 콘솔에 넣는 값
쿠키가 사파리에서 빠지는 자리는 터널이 아닙니다. 그 칸은 세임사이트에 있습니다. 여기는 주소가 콘솔을 통과하는 자리만 봅니다.
포트를 열지 않는 이유 | 터널은 노트북이 클라우드플레어로 밖으로 붙는 연결입니다. 공유기 가상서버 칸에 3000번을 넣지 않습니다. 방화벽은 7844번이 밖으로 나가는지만 보면 됩니다.
퀵 터널 한 줄로 https 주소를 연다
맥에서는 홈브루로 클라우드플레어드(cloudflared)를 깝니다. 넥스트 개발 서버가 3000번에서 떠 있으면, 다른 터미널에서 유알엘만 넘깁니다.
계정은 필요 없습니다. 프로세스가 트라이클라우드플레어 아래 랜덤 서브도메인을 찍고, 그 주소가 노트북의 3000번으로 프록시됩니다. 공식 퀵 터널 문서의 예시는 8080번입니다. 넥스트면 3000번으로 바꿉니다. 페이지 로컬 미리보기 문서 예시는 5173번입니다. 포트만 맞으면 됩니다.
맥에서 클라우드플레어드를 깔고 퀵 터널을 연다
# https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/downloads/
brew install cloudflared
cloudflared --version
# 넥스트 개발 서버가 이미 3000번에서 떠 있다고 가정
# 공식 퀵 터널 예시는 8080. 포트만 맞춘다
cloudflared tunnel --url http://localhost:3000
터미널에 https로 시작하는 트라이클라우드플레어 주소가 뜹니다. 그 주소를 브라우저에 넣으면 로컬 화면이 보입니다. 카카오 리다이렉트 칸에 잠깐 붙여 로그인 한 번을 볼 수는 있습니다. 프로세스를 끄면 주소는 사라집니다. 다시 켜면 다른 이름이 나옵니다.
홈 디렉터리에 .cloudflared/config.yaml이 있으면 퀵 터널이 거절됩니다. 공식 문서가 그 파일을 잠시 이름을 바꾸라고 적습니다. 예전에 고정 터널을 만지다 파일이 남은 맥에서 자주 막힙니다. 이름을 돌리기 전에 고정 터널을 안 쓰는지 확인합니다.
퀵 터널은 계정 없이 주소를 바로 준다. 켤 때마다 이름이 바뀌어 콘솔 고정값에는 못 쓴다
주소가 매번 바뀌면 콘솔이 깨진다
퀵 터널은 시험용입니다. 공식 문서가 프로덕션에 쓰지 말라고 적습니다. 동시 요청은 200개에서 막히고, 그때 응답은 429입니다. 서버 센트 이벤트는 지원하지 않습니다.
카카오 콘솔에 오늘 아침 주소를 저장하고 점심에 터널을 다시 켜면, 콜백은 아침 주소로 갑니다. 그 이름은 이미 없습니다. 토스 웹훅 유알엘도 같습니다. 콘솔 심사는 하루가 걸리기도 해서, 랜덤 주소를 넣어 두면 심사 도중에 끊깁니다.
퀵 터널은 에스엘에이도 없습니다. 새 기능을 먼저 얹는 자리라고 문서가 밝힙니다. 동료에게 5분 프리뷰를 보여 줄 때, 모바일에서 로컬 화면을 볼 때 씁니다. 콘솔에 남는 값은 다음 칸입니다.
콘솔에 랜덤 주소를 넣지 않는다 | 퀵 터널 링크는 그날 오전의 시험입니다. 카카오 리다이렉트와 토스 웹훅 칸에는 자기 도메인 서브호스트만 넣습니다.
대시보드에서 고정 호스트를 붙인다
콘솔에 넣을 주소는 원격 관리 터널입니다. 클라우드플레어에 사이트로 붙여 둔 도메인이 있어야 공개 앱을 낼 수 있습니다. 대시보드 경로는 네트워킹, 터널입니다.
터널 이름을 만들고, 운영체제에 맞는 설치 명령을 노트북에서 실행합니다. 연결이 뜨면 라우트에서 퍼블리시드 애플리케이션을 고릅니다. 호스트 이름은 예를 들어 hook.내도메인.com, 서비스 유알엘은 http://localhost:3000 입니다. 저장하면 그 호스트가 노트북으로 옵니다. 멀티 레벨 서브도메인은 고급 인증서가 따로 필요할 수 있습니다. 문서가 그 오류를 적어 두었습니다.
대시보드가 준 토큰으로 터널을 서비스에 붙인다
# 설치는 다운로드 문서 기준. 맥은 홈브루
# https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/downloads/
brew install cloudflared
# 대시보드 네트워킹 > 터널 > 만들기 화면에 나오는 명령을 그대로 붙인다
# 토큰은 저장소에 커밋하지 않는다
sudo cloudflared service install <TUNNEL_TOKEN>
# 도커로 띄울 때 (공식 셋업 문서)
# docker run cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <TUNNEL_TOKEN>
토큰은 깃에 넣지 않습니다. 환경 파일과 시크릿 스캔은 환경변수 체크에 있습니다. 액션 러너에 장기 키를 넣는 자리는 오아이디씨로 뺍니다. 여기는 노트북 한 대에 토큰을 심는 자리만 봅니다.
상태 칸이 헬시여야 콜백이 옵니다. 인액티브나 다운이면 프로세스가 꺼진 겁니다. 노트북을 덮으면 터널도 같이 끊깁니다. 카카오 심사를 기다리는 낮에는 뚜껑을 열어 두고, 잠들기 전에 서비스를 끕니다. 프로덕션 웹훅 시크릿을 로컬 터널에 밤새 물려 두지 않습니다.
네트워킹 터널에서 만들고, 퍼블리시드 애플리케이션에 자기 호스트와 localhost 포트를 넣는다
엔그록과 어디서 갈리나
엔그록(ngrok) 무료는 계정에 묶인 개발 도메인 하나가 있습니다. 2026년 공개 한도 문서 기준, 온라인 엔드포인트는 3개, 전송은 월 1기가, 요청은 월 2만 건입니다. 무료 주소는 계정에 할당된 이름이라 퀵 터널보다 안 바뀝니다. 다만 그 이름은 엔그록 브랜드입니다. 카카오, 토스 콘솔에 넣어도 동작은 합니다. 심사 화면에 브랜드 도메인이 보이면 설명이 한 줄 더 필요합니다.
클라우드플레어 고정 터널은 자기 도메인 서브호스트를 씁니다. 퀵 터널만 쓰면 주소가 매번 바뀝니다. 계정 터널은 도메인을 클라우드플레어 네임서버에 붙여야 합니다. 이미 가비아 네임서버를 쓰는 사이트는 존을 옮기거나, 서브도메인만 시네임으로 넘기는 구성이 필요합니다. 저는 12사이트 중 클라우드플레어에 붙어 있는 도메인 하나로 콜백 호스트를 모았습니다.
항목
클라우드플레어 퀵
클라우드플레어 고정
엔그록 무료
계정
없음
필요 + 도메인
필요
주소
매번 랜덤
자기 서브호스트
계정에 할당된 개발 도메인 1개
요청 한도
동시 200
퀵 한도 없음
월 2만 건, 전송 1기가
콘솔 고정
비추천
추천
가능. 브랜드 도메인
한국 콘솔
시험만
자기 도메인이라 설명이 짧음
동작함. 심사 설명 한 줄
엔그록 한도는 무료 플랜 한도입니다. 숫자가 바뀌면 그 페이지가 우선입니다. 로컬 런타임 비교는 오르브스택에 있고, 여기는 밖으로 여는 주소만 봅니다.
헤더와 서명이 터널 뒤에서 깨지는 자리
주소가 열려도 넥스트 개발 서버가 호스트를 거절하면 화면이 비거나 403이 납니다. 개발 서버는 처음에 뜬 호스트만 받습니다. 터널 호스트를 쓰려면 허용 개발 오리진 칸에 그 이름을 넣습니다.
웹훅 핸들러가 x-forwarded-proto를 안 보면, 로컬은 http인데 콘솔은 https라 서명 문자열이 어긋납니다. 토스와 스트라이프는 원문 바디와 시크릿으로 에이치맥을 만듭니다. 프록시가 바디를 다시 인코딩하면 서명이 깨집니다. 원문 버퍼를 그대로 검증합니다. 같은 이벤트가 두 번 오면 터널 문제가 아닙니다. 그 칸은 멱등에 있습니다.
터널 유알엘을 링크 미리보기에 넣지 않습니다. 서버가 그 주소를 대신 열면 노트북이 외부에 노출됩니다. 미리보기 허용 목록은 에스에스알에프에 있습니다. 가입 메일이 스팸이면 터널이 아니라 디엔에스입니다. 그 칸은 디킴에 있습니다.
허용 개발 오리진, 원문 바디 서명, 멱등 키를 터널 주소와 따로 본다
프로덕션 시크릿을 밤새 물리지 않는다 | 로컬 터널은 노트북이 켜져 있는 낮만 엽니다. 토스 라이브 웹훅 시크릿을 고정 호스트에 묶어 두고 뚜껑을 닫으면, 재시도만 쌓입니다. 샌드박스 키로 확인하고 라이브는 배포 주소에 둡니다.
참고 자료
Quick Tunnels - 계정 없는 시험 터널, 동시 200, 서버 센트 이벤트 없음. 2026년 4월 20일 갱신