TechFeedTechFeed
Cloud & DevOps

클라우드플레어 터널, 퀵 터널, 웹훅, 카카오 콜백 | localhost를 콘솔에 못 넣을 때 어디를 여나?

카카오 리다이렉트와 토스 웹훅은 localhost를 거절하는 달이 많다. 공유기 포트 대신 클라우드플레어 터널로 노트북에서 밖으로만 연다. 퀵 터널은 주소가 매번 바뀌고, 콘솔 고정값은 자기 서브호스트다. Next.js 허용 개발 오리진, 웹훅 서명, 엔그록 무료 한도를 개발자, API, 데브옵스, 클라우드 기준으로 나눈다.

by

카카오 로그인 리다이렉트와 토스 웹훅은 콘솔에 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분 프리뷰를 보여 줄 때, 모바일에서 로컬 화면을 볼 때 씁니다. 콘솔에 남는 값은 다음 칸입니다.


제한퀵 터널계정 터널
계정없음필요. 도메인을 클라우드플레어에 붙여야 공개 앱을 냄
주소켤 때마다 랜덤자기 서브호스트로 고정
동시 요청200, 넘으면 429퀵 터널 한도 없음
서버 센트 이벤트없음계정 터널 쪽을 씀
콘솔 고정넣지 않음카카오, 토스 칸에 넣음

정본은 퀵 터널 문서입니다. 한도는 2026년 4월 갱신 페이지 기준입니다.


콘솔에 랜덤 주소를 넣지 않는다 | 퀵 터널 링크는 그날 오전의 시험입니다. 카카오 리다이렉트와 토스 웹훅 칸에는 자기 도메인 서브호스트만 넣습니다.


대시보드에서 고정 호스트를 붙인다

콘솔에 넣을 주소는 원격 관리 터널입니다. 클라우드플레어에 사이트로 붙여 둔 도메인이 있어야 공개 앱을 낼 수 있습니다. 대시보드 경로는 네트워킹, 터널입니다.


터널 이름을 만들고, 운영체제에 맞는 설치 명령을 노트북에서 실행합니다. 연결이 뜨면 라우트에서 퍼블리시드 애플리케이션을 고릅니다. 호스트 이름은 예를 들어 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이 납니다. 개발 서버는 처음에 뜬 호스트만 받습니다. 터널 호스트를 쓰려면 허용 개발 오리진 칸에 그 이름을 넣습니다.


넥스트 개발 서버가 터널 호스트를 받게 한다
// next.config.js // https://nextjs.org/docs/app/api-reference/config/next-config-js/allowedDevOrigins module.exports = { allowedDevOrigins: ['hook.example.com', '*.trycloudflare.com'], }

웹훅 핸들러가 x-forwarded-proto를 안 보면, 로컬은 http인데 콘솔은 https라 서명 문자열이 어긋납니다. 토스와 스트라이프는 원문 바디와 시크릿으로 에이치맥을 만듭니다. 프록시가 바디를 다시 인코딩하면 서명이 깨집니다. 원문 버퍼를 그대로 검증합니다. 같은 이벤트가 두 번 오면 터널 문제가 아닙니다. 그 칸은 멱등에 있습니다.


터널 유알엘을 링크 미리보기에 넣지 않습니다. 서버가 그 주소를 대신 열면 노트북이 외부에 노출됩니다. 미리보기 허용 목록은 에스에스알에프에 있습니다. 가입 메일이 스팸이면 터널이 아니라 디엔에스입니다. 그 칸은 디킴에 있습니다.


터널 뒤에서 호스트 거절과 웹훅 서명이 어긋나는 지점을 나눈 그림
허용 개발 오리진, 원문 바디 서명, 멱등 키를 터널 주소와 따로 본다

프로덕션 시크릿을 밤새 물리지 않는다 | 로컬 터널은 노트북이 켜져 있는 낮만 엽니다. 토스 라이브 웹훅 시크릿을 고정 호스트에 묶어 두고 뚜껑을 닫으면, 재시도만 쌓입니다. 샌드박스 키로 확인하고 라이브는 배포 주소에 둡니다.


참고 자료


한도와 메뉴 이름은 수시로 바뀝니다. 위 표는 2026년 8월 공개 문서 기준이며, 설치 명령은 대시보드에 찍힌 줄을 우선합니다.


자주 묻는 질문

카카오 리다이렉트에 퀵 터널 주소를 넣어도 되나?

한 번 눌러 보는 시험은 됩니다. 콘솔에 남겨 두면 안 됩니다. 프로세스를 다시 켜면 이름이 바뀌고, 심사가 끝나기 전에 콜백이 끊깁니다. 콘솔에는 자기 도메인 서브호스트를 넣습니다.


클라우드플레어에 도메인이 없으면 어떻게 하나?

퀵 터널은 도메인 없이 됩니다. 고정 호스트는 사이트를 클라우드플레어에 붙여야 공개 앱을 냅니다. 도메인을 옮기기 싫으면 엔그록 무료의 할당 개발 도메인 하나로 콘솔을 채웁니다. 브랜드 이름이 보이면 심사 메모에 로컬 콜백이라고 한 줄 적습니다.


넥스트가 터널 주소에서 403을 내면?

개발 서버가 처음 뜬 호스트만 받는 경우가 많습니다. 허용 개발 오리진에 고정 호스트와 트라이클라우드플레어 와일드카드를 넣습니다. 설정 파일을 고친 뒤 개발 서버를 다시 켭니다. 프로덕션 빌드에는 이 칸이 적용되지 않습니다.


웹훅 서명이 로컬에서만 실패하면?

원문 바디를 다시 파싱한 뒤 문자열로 서명하면 어긋납니다. 프록시가 넘긴 버퍼를 그대로 검증합니다. 프로토콜 칸이 http로 남으면 콘솔의 https와 문자열이 다릅니다. 포워드된 프로토콜 헤더를 먼저 봅니다. 같은 아이디가 두 번이면 멱등 글입니다.


노트북을 덮으면 카카오 콜백이 살아 있나?

끊깁니다. 터널 프로세스가 노트북에 붙어 있습니다. 심사를 기다리는 낮에는 뚜껑을 엽니다. 잠들기 전에 서비스를 끄고, 라이브 웹훅은 배포 주소로 돌립니다.


윈도우에서도 같은 명령인가?

설치만 다릅니다. 깃허브 릴리스의 실행 파일이나 엠에스아이를 받고, 관리자 명령 프롬프트에서 서비스 인스톨에 토큰을 붙입니다. 퀵 터널 한 줄의 유알엘 플래그는 같습니다. 윈도우는 자동 업데이트가 없다고 다운로드 문서가 적습니다.


클라우드플레어 터널퀵 터널웹훅카카오토스cloudflaredNext.js개발자API데브옵스로컬호스트엔그록

함께 보면 좋은 문제 해결

EXPLORE / Cloud & DevOps

이어서 읽어보기

전체 토픽 둘러보기