CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·아이포니앙 ·주식한당 ·MaClien ·방탄소년당 ·일본산당 ·개발한당 ·자전거당 ·안드로메당 ·노젓는당 ·육아당 ·나스당 ·소시당 ·영화본당 ·디아블로당 ·소셜게임한당 ·가상화폐당 ·리눅서당 ·여행을떠난당 ·X세대당 ·달린당 ·퐁당퐁당 ·보드게임당 ·키보드당 ·날아간당 ·뚝딱뚝당 ·창업한당 ·덕질한당 ·이륜차당 ·총쏜당 ·스팀한당 ·AI그림당 ·개판이당 ·바다건너당 ·물고기당 ·콘솔한당 ·IoT당 ·시계찬당 ·AI당 ·냐옹이당 ·야구당 ·3D메이킹 ·ADHD당 ·사과시계당 ·배드민턴당 ·농구당 ·블랙베리당 ·곰돌이당 ·비어있당 ·FM당구당 ·블록체인당 ·활자중독당 ·볼링친당 ·캠핑간당 ·문명하셨당 ·클래시앙 ·클다방 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·동숲한당 ·날아올랑 ·전기자전거당 ·e북본당 ·갖고다닌당 ·이브한당 ·패셔니앙 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·젬워한당 ·걸그룹당 ·안경쓴당 ·골프당 ·차턴당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·KARA당 ·꼬들한당 ·어학당 ·가죽당 ·레고당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·MTG한당 ·소리당 ·노키앙 ·적는당 ·방송한당 ·PC튜닝한당 ·찰칵찍당 ·그림그린당 ·소풍간당 ·심는당 ·패스오브엑자일당 ·라즈베리파이당 ·품앱이당 ·리듬탄당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·나혼자산당 ·스타한당 ·파도탄당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·터치패드당 ·트윗당 ·VR당 ·WebOs당 ·위스키당 ·와인마신당 ·WOW당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

팁과강좌

PC/모바일 [Notion] 노션 공개 페이지에 도메인 연결하기 8

5
2020-01-28 23:04:47 수정일 : 2020-02-27 21:21:21 59.♡.207.67
ColorFilter

출처 : https://romantech.net/1046


노션에서 작성한 모든 페이지는 공개 링크를 만들어 다른 사람에게 공유할 수 있다. 링크를 공유받은 사용자는 노션에 가입하지 않아도 공개 설정한 페이지에 방문할 수 있다. 언제가 될진 모르겠지만 추후 "커스텀 도메인" 기능도 지원한다고 했다. 이 기능을 지원하면 자신이 보유한 도메인을 노션 공개 페이지에 연동하여 사용할 수 있다. 그럼 노션을 블로그 같은 콘텐츠 배포 공간으로 활용하기 더 좋아진다. 하지만 아쉽게도 도메인 연동 기능을 언제 지원할지는 아직 미지수다. 


그래서 오늘은 자신이 보유하고 있는 도메인을 노션 페이지에 연동하는 방법을 소개하고자 한다. Cloudflare의 Web Worker를 활용하여 HTTP 요청을 수동으로 변경해주면 자신의 도메인으로도 Notion의 공개 페이지에 접속할 수 있다. 복잡해 보이지만 차근차근 따라 해 보면 정말 간단하다. 


1. 노션 페이지 공개 설정

Notion 페이지 공개 설정 화면

▲ 먼저 공유하고 싶은 노션 페이지를 공개 상태로 만들어야 한다. 공개하고 싶은 페이지에서 우측 상단 Share 버튼을 눌러 Public Access 옵션을 체크하면 된다. 검색엔진에도 노출하고 싶다면 Allow Search Engines에 체크하면 된다. 공개 설정했다면 바로 아래에 있는 Copy Page Link를 클릭해 공개 페이지 링크를 복사해둔다. 그럼 아래 같은 공개 링크를 부여받는다. 


https://www.notion.so/colorfilter/Romantech-for-Notion-e6badd990a774dabac02284d704529c0



2. 네임서버 변경

호스팅케이알 네임서버 변경 화면

▲ 본인이 사용하고 있는 도메인을 CloudFlare 네임서버로 변경해야 한다. Hosting.kr 기준 "도메인" ➝ "정보 변경" ➝ "네임서버 주소 변경"에서 변경할 수 있다. 완료했다면 다시 Cloudflare 사이트 로그인 후 "+ Add Site" 버튼을 눌러 자신의 도메인을 추가하면 된다.

네임서버를 변경하면 기존 등록했던 네임서버 설정이 모두 지워지므로 Cloudflare에서 다시 등록해야 한다. 도메인 네임서버 변경 관련한 더 자세한 내용은 링크를 참조하면 된다. 

https://support.cloudflare.com/hc/en-us/articles/205195708-Changing-your-domain-nameservers-to-Cloudflare



3. 도메인 별칭(CNAME) 설정

네임서버 변경을 완료했다면 CloudFlare 대시보드에서 도메인 CNAME을 설정해야 한다. 만약 DOMAIN.COM 이 본인이 소유하고 있는 도메인 주소고 NT.DOMAIN.COM 도메인 별칭을 Notion 공개 페이지로 연결하고 싶다면 NT 별칭 레코드를(CNAME) 추가하면 된다. 


CloudFlare의 CNAME 설정 화면

▲ CloudFlare 대시보드에서 "DNS" 아이콘을 눌러 DNS 관리 페이지로 들어간 뒤 위 이미지처럼 추가한다. Name 부분은 도메인 앞에 들어가는 별칭으로(nt.domain.com) 원하는 단어를 임의로 입력해주면 된다. 

  • Type : CNAME
  • Name : nt (임의입력)
  • Target : notion.so



4. Web Worker 세팅

CloudFlare의 Workers 페이지 화면

▲ 다음 할 일은 CloudFlare의 Web Workers를 이용해 앞서 추가한 서브도메인에 대한 HTTP 요청을 자동으로 바꿔주는 세팅을 해야 한다. 대시보드 상단에 있는 "Worker" 아이콘을 클릭한 뒤 하단 "Launch Editor" 버튼을 클릭한다.


▲ Launch Editor 페이지 좌측에 있는 "Add Script" 버튼을 클릭하여 Script Name을 notion-worker로 입력한다. 스크립트 편집창이 뜨면 아래 내용을 추가한다. 


const MY_DOMAIN = "example.com"
const START_PAGE = "https://www.notion.so/link/to/your/public/page"

addEventListener('fetch', event => {
event.respondWith(fetchAndApply(event.request))
})

const corsHeaders = {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, HEAD, POST,PUT, OPTIONS",
"Access-Control-Allow-Headers": "Content-Type",
}

function handleOptions(request) {
if (request.headers.get("Origin") !== null &&
request.headers.get("Access-Control-Request-Method") !== null &&
request.headers.get("Access-Control-Request-Headers") !== null) {
// Handle CORS pre-flight request.
return new Response(null, {
headers: corsHeaders
})
} else {
// Handle standard OPTIONS request.
return new Response(null, {
headers: {
"Allow": "GET, HEAD, POST, PUT, OPTIONS",
}
})
}
}

async function fetchAndApply(request) {
if (request.method === "OPTIONS") {
return handleOptions(request)
}
let url = new URL(request.url)
let response
if (url.pathname.startsWith("/app") && url.pathname.endsWith("js")) {
response = await fetch(`https://www.notion.so${url.pathname}`)
let body = await response.text()
try {
response = new Response(body.replace(/www.notion.so/g, MY_DOMAIN).replace(/notion.so/g, MY_DOMAIN), response)
// response = new Response(response.body, response)
response.headers.set('Content-Type', "application/x-javascript")
console.log("get rewrite app.js")
} catch (err) {
console.log(err)
}

} else if ((url.pathname.startsWith("/api"))) {
response = await fetch(`https://www.notion.so${url.pathname}`, {
body: request.body, // must match 'Content-Type' header
headers: {
'content-type': 'application/json;charset=UTF-8',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
},
method: "POST", // *GET, POST, PUT, DELETE, etc.
})
response = new Response(response.body, response)
response.headers.set('Access-Control-Allow-Origin', "*")
} else if (url.pathname === `/`) {
let pageUrlList = START_PAGE.split("/")
let redrictUrl = `https://${MY_DOMAIN}/${pageUrlList[pageUrlList.length-1]}`
return Response.redirect(redrictUrl, 301)
} else {
response = await fetch(`https://www.notion.so${url.pathname}`, {
body: request.body, // must match 'Content-Type' header
headers: request.headers,
method: request.method, // *GET, POST, PUT, DELETE, etc.
})
}

return response
}


  • 위 스크립트 내용 중 모든 MY_DOMAIN 부분을 서브 도메인 주소로 대치(노션 페이지로 연결시킬 별칭 도메인).

예시) "NT.DOMAIN.COM"

  • START_PAGE 는 노션 공개 페이지의 URL로 대치(1번에서 복사해뒀던 노션 Public Page Link).


▲ 스크립트 내용 추가/수정이 완료됐다면 Deploy(Save) 버튼을 눌러 저장한 후 다시 Worker 페이지로 돌아간다. 


Route 편집 화면

▲ Worker 페이지에서 Add Route 버튼을 눌러 Route와 Worker 항목을 각각 아래처럼 입력한다.

  • Route : 사용자 지정 도메인 뒤에 /* 와일드카드 문자 추가(해당 도메인의 모든 하위 콘텐츠는 Web Worker로 엑세스).

예시) NT.DOMAIN.COM/*

  • Worker : Launch Editor에서 세팅한 notion-worker 선택


위: 도메인 접속 주소, 아래: 노션 공개 링크 주소


여기까지 기본적인 세팅을 완료했다. 이제 앞서 설정한 도메인 주소를 입력하여(예를 들면 본인의 https://colorfilter.me ) 외부에 공개한 Notion 페이지로 접속할 수 있다. 이 방식은 CloudFlare의 Edge Computing 기능을 이용해 Notion 공개 페이지로 액세스 하는 HTTP 요청 패킷의 Host 수정을 통해 구현한 원리(라고 한)다. CloudFlare의 우수한 CDN 성능 때문인지 노션 페이지가 열리는 시간도 더 단축된 것 같다.


참고 글 : https://notion-tricks.com/Use-a-custom-domain-for-a-public-Notion-page-c65c2475c520432e8bd87195edf7c464

출처 : https://romantech.net/1046
ColorFilter 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [8]
보리랑
IP 124.♡.99.7
01-28 2020-01-28 23:29:44
·
해외 사이트에 정리되어 있는 것을 보고도 천천히 읽으면서 따라하기가 좀 그래서 안했는데.
이렇게 잘 정리해주셔서 다시 한번 도전을 해봐야겠네요-
감사합니다.
ColorFilter
IP 59.♡.207.67
01-28 2020-01-28 23:39:27
·
보리랑님// 도움이 되셨다니 다행입니다 ㅎㅎ 생각보다 넘나 간단해서 놀랐습니다.
빙빙이
IP 121.♡.254.101
01-29 2020-01-29 01:25:25
·
와 말도 안돼... 이런 트릭이 공짜로 가능하다니!! 클라우드플레어도 대단하고 아무튼 세상 너무 좋아졌네요.
좋은 지식 소개해 주셔서 정말 감사합니다.
j2rry
IP 147.♡.1.61
01-29 2020-01-29 09:57:48
·
위에처럼 하면 공개 페이지 : 해당 도메인 = 1 : 1 매핑인건가요?
정한
IP 175.♡.43.42
01-29 2020-01-29 10:26:38 / 수정일: 2020-01-29 10:26:51
·
본문에 소개된 방법과 다른 성격일 수 있으나, 얼마 전 공개된 노션 API를 이용해서 직접 구축해보는 방법도 있습니다!
Sith_Lord
IP 112.♡.213.134
01-29 2020-01-29 17:30:32
·
능력자님 너무 좋아요
맥맥맥맥-
IP 211.♡.250.14
01-31 2020-01-31 10:08:47
·
우와 감사합니다!!! 이렇게 되면 좋겠다 생각하던 것인데
삭제 되었습니다.
_발전소_
IP 220.♡.253.10
06-04 2020-06-04 18:07:12
·
노션을 둘러보다 궁금한 내용이라
혹시나 하고 클리앙에 검색하니 내용이 똭!

감사합니다. ^^
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.