무료 사용자 지정 도메인 URL 단축기 만들기(Cloudflare Workers 사용)

in 리소스 및 도구

우리의 콘텐츠는 독자 지원됩니다. 링크를 클릭하면 수수료를 받을 수 있습니다. 우리가 검토하는 방법.

이번 포스팅에서는 여러분과 공유하겠습니다. Cloudflare Workers를 사용하여 나만의 사용자 지정 도메인 URL 단축기를 만드는 방법. 벨트에 다른 도구를 추가하려는 웹 개발자, 큰 가격표 없이 링크를 브랜드화하려는 사업주 또는 웹 기술을 다루는 것을 좋아하는 사람이든 이 단계별 가이드는 다음을 위한 것입니다. 너.

웹 개발자이자 기술 애호가로서 저는 항상 인터넷을 더욱 효율적이고 사용자 친화적으로 만드는 작은 것들에 매료되어 왔습니다. 어느 날 유난히 길고 다루기 힘든 URL을 동료와 공유하던 중 링크를 단축하는 간단하고 개인화된 방법이 필요하다는 사실을 깨달았습니다. 물론, URL 단축 서비스가 많이 있지만 저는 좀 더 "나"처럼 느껴지는 서비스, 즉 내가 맞춤화하고 제어할 수 있는 서비스를 원했습니다.

그때 Cloudflare Workers를 사용하여 나만의 사용자 지정 URL 단축기를 만드는 아이디어를 우연히 발견했습니다.. 마치 웹 기술의 광활한 바다 속에서 숨겨진 보물을 찾는 것과 같았습니다. URL을 단축할 수 있을 뿐만 아니라 내 도메인 이름으로 무료로 단축할 수 있습니다! 이 발견에 대한 흥분은 제가 처음으로 웹 사이트를 배포했을 때의 힘찬 힘과 무한한 가능성을 떠올렸습니다.

이 발견을 더욱 흥미롭게 만든 것은 사용자 정의 도메인에서 브랜드의 짧은 링크를 생성하기 위해 Bit.ly 또는 TinyURL과 같은 인기 있는 서비스에 대한 환상적이고 무료 대안이 될 수 있다는 사실을 깨달았습니다. 많은 기업과 개인이 이런 종류의 기능을 사용하기 위해 많은 비용을 지불하지만 여기에는 한 푼도 쓰지 않고도 동일한 결과를 얻을 수 있는 방법이 있습니다.

1단계: 도메인 이름 등록(짧은 도메인 사용)

    맞춤 URL 단축기를 만드는 첫 번째 단계는 도메인 이름을 등록하는 것입니다. 이는 귀하의 브랜드 짧은 링크의 기초가 될 것이므로 현명하게 선택하십시오!

    완벽한 도메인을 선택하는 데 도움이 되는 몇 가지 팁은 다음과 같습니다.

    1. 짧게 지켜라.: URL 단축기의 핵심은 간결한 링크를 만드는 것입니다. 가능하다면 3~5자로 구성된 도메인 이름을 찾으세요. 이는 약어, 두문자어 또는 눈길을 끄는 단어일 수 있습니다.
    2. 기억에 남을 수 있도록: 기억하기 쉬운 것을 선택하여 입력하세요. 이렇게 하면 귀하와 다른 사람들이 단축 링크를 더 쉽게 사용할 수 있습니다.
    3. 귀하의 브랜드를 고려하십시오: 비즈니스 또는 개인 브랜드에 사용하는 경우 도메인을 기존 브랜드 아이덴티티에 맞춰보세요.
    4. 확인하기: 짧고 눈길을 끄는 도메인에 대한 수요가 높습니다. 첫 번째 선택 항목을 사용할 수 없는 경우 창의성을 발휘하거나 .io, .co 또는 .me와 같은 대체 최상위 도메인(TLD)을 고려해야 할 수 있습니다.
    5. TLD에 대해 생각해 보세요: .com이 인기가 있지만 다른 TLD를 피하지 마십시오. .link 또는 .click과 같은 일부는 URL 단축기에 특히 적합할 수 있습니다.

    다음은 여러분에게 영감을 줄 수 있는 몇 가지 예입니다.

    • abc.link
    • go.io
    • shrt.co
    • zap.me

    도메인을 선택한 후에는 도메인 등록 기관에서 구입해야 합니다. 인기 있는 옵션은 다음과 같습니다.

    • Namecheap
    • 에서 GoDaddy
    • Cloudflare (권장 – Cloudflare Workers를 사용할 예정이므로 매우 편리합니다)

    도메인은 비용이 들지만 1년에 한 번만 구매하면 되며 나머지 URL 단축기 설정은 Cloudflare Workers를 사용하여 무료로 제공됩니다.

    전문가 팁: 구매를 완료하기 전에 도메인이 스팸이나 악의적인 활동과 연결되어 있지 않은지 확인하세요. Domain Tools 또는 Wayback Machine과 같은 도구를 사용하여 기록을 확인할 수 있습니다.

    빛나는 새 도메인을 손에 넣었다면 다음 단계인 도메인에 Cloudflare 설정으로 넘어갈 준비가 된 것입니다. 하지만 이에 대해서는 다음 섹션에서 다루겠습니다.

    2단계: 도메인에 대한 DNS 레코드 구성

    이제 도메인이 준비되었으므로 DNS 구성을 설정할 차례입니다. 이 단계는 Cloudflare 작업자가 새로 등록된 도메인에서 올바르게 작동하는지 확인하는 데 중요합니다.

    Cloudflare

    프로세스를 살펴보겠습니다.

    1. Cloudflare에 도메인 추가

      • 아직 그렇게하지 않았다면, 무료 Cloudflare 계정을 만드세요.
      • Cloudflare 대시보드에서 "사이트 추가"를 클릭하고 도메인 이름을 입력하세요.
      • Cloudflare는 기존 DNS 레코드를 검색합니다. 발견된 모든 기록을 삭제합니다(이메일이나 기타 중요한 서비스에 도메인을 사용하지 않는 한 해당 도메인을 유지하세요).

      2. 네임서버 업데이트(도메인이 Cloudflare에 등록된 경우 이 단계를 무시하세요)

        Cloudflare 이름 서버
        • Cloudflare는 일련의 이름 서버를 제공합니다.
        • 도메인 등록 기관의 웹사이트로 이동하여 기존 이름 서버를 Cloudflare에서 제공하는 이름 서버로 교체하세요.
        • 이 단계가 전 세계적으로 적용되는 데 최대 24시간이 걸릴 수 있습니다.

        3. DNS 레코드 구성

        Cloudflare DNS 관리
        • Cloudflare DNS 설정에 두 개의 새로운 A 레코드를 추가하겠습니다.
        • 다음을 추가하십시오.
        유형: A
        이름: @
        콘텐츠 : 192.0.2.1
        TTL : 자동차
        프록시 상태: 프록시됨 (주황색 구름 - 매우 중요)

        유형: A
        이름: WWW
        콘텐츠 : 192.0.2.1
        TTL : 자동차
        프록시 상태: 프록시됨 (주황색 구름 - 매우 중요)

        이 192.0.2.1 IP는 특별한 "더미" 주소입니다. 문서화 및 테스트용으로 예약되어 있어 우리의 요구에 완벽하게 맞습니다.

        4. Cloudflare 프록시 활성화

        • DNS 레코드에 대해 프록시 상태(주황색 구름 아이콘)가 활성화되어 있는지 확인하세요.
        • 이를 통해 Cloudflare가 트래픽을 프록시할 수 있으며 Cloudflare 작업자가 작동하는 데 필요합니다.

        5. 구성 확인

        • 이름 서버 변경 사항이 전파되면 Cloudflare는 도메인을 "활성"으로 표시합니다.
        • Cloudflare 대시보드에서 이를 확인할 수 있습니다.

          여기서 중요한 점은 귀하의 도메인이 실제 웹 호스팅을 가리키지 않는다는 것입니다. 192.0.2.1 주소는 단지 자리 표시자일 뿐입니다.. 다음에 설정할 Cloudflare 작업자는 도메인에 대한 모든 요청을 가로채고 URL 단축 논리를 처리합니다.

          전문가 팁: 이 설정은 웹 호스팅 비용을 지불하거나 관리할 필요가 없음을 의미합니다. Cloudflare Workers가 모든 무거운 작업을 처리하므로 이 솔루션은 무료일 뿐만 아니라 놀라울 정도로 가볍고 유지 관리가 쉽습니다.

          DNS가 올바르게 구성되었으면 이제 흥미로운 부분인 URL 단축을 처리하도록 Cloudflare Worker를 설정하는 단계로 넘어갈 준비가 되었습니다.

          3단계: Cloudflare 작업자 생성

          이제 Cloudflare에 도메인을 구성했으므로 리디렉션을 처리할 작업자를 생성할 차례입니다. Cloudflare Workers는 최적의 성능을 위해 사용자와 가까운 에지에서 코드를 실행할 수 있는 서버리스 실행 환경을 제공합니다.

          1. Cloudflare 작업자 생성

          • 작업자 섹션에 액세스:
            • Cloudflare 대시보드에 로그인합니다.
            • 사이드바에서 '작업자' 섹션으로 이동합니다.
            • 첫 번째 작업자인 경우 "서비스 만들기"를 클릭하고, 기존 작업자가 이미 있는 경우 "작업자 만들기"를 클릭하세요.
          • 직원 이름:
            • "bulk-redirects-handler"와 같이 작업자를 설명하는 이름을 선택합니다.
            • “서비스 생성”을 클릭하여 편집기로 이동하세요.
          • 작업자 스크립트 작성:
            • 편집기에서 기본 코드를 리디렉션 처리기 스크립트로 바꿉니다.
          기본 내보내기 {
          비동기 페치(요청) {
          const 리다이렉트맵 = 새로운 맵([
          ["google", "https://www.google.com?subId1=google"],
          ["bing", "https://www.bing.com?subId1=bing"],
          // 필요에 따라 여기에 더 많은 리디렉션을 추가합니다.
          ]);

          const url = 새 URL(request.url);
          console.log("전체 URL:", url.toString());
          console.log("호스트 이름:", url.hostname);
          console.log("경로명:", url.pathname);

          let path = url.pathname.toLowerCase().replace(/^\//, '').split('/')[0];

          if (url.hostname.includes('workers.dev')) {
          경로 = url.pathname.toLowerCase().replace(/^\//, '').split('/')[1] || '';
          }

          console.log("처리된 경로:", path);

          const 위치 = 리디렉션Map.get(경로);
          console.log("리디렉션 위치:", location);

          // 영구 리디렉션을 위해 301로 변경
          if (위치) {
          return Response.redirect(location, 302);
          }

          // 요청이 맵에 없으면 404 또는 선호하는 폴백을 반환합니다.
          return new Response(`찾을 수 없음: ${path}`, { status: 404 });
          },
          };
          • 스크립트 이해:
            • 우리는 리디렉션지도 여기에는 짧은 경로와 해당 전체 URL이 포함됩니다.
                ["google", "https://www.google.com?subId1=google"],

          yourshorturl.com/google -> https://www로 리디렉션됩니다.google.com?subId1=google

          ["bing", "https://www.bing.com?subId1=bing"],

          yourshorturl.com/bing은 -> https://www.bing.com?subId1=bing으로 리디렉션됩니다.
          • 스크립트는 들어오는 요청을 처리하고, 경로를 추출하고, 정의된 리디렉션과 일치하는지 확인합니다.
          • 일치하는 항목이 발견되면 해당 URL에 302(임시 리디렉션)를 반환합니다.
          • 일치하는 항목이 없으면 404 Not Found 응답을 반환합니다.
          • 작업자 테스트:
            • Cloudflare 대시보드의 "빠른 편집" 기능을 사용하여 작업자를 변경하고 테스트하세요.
            • 제공된 HTTP 테스트 도구를 사용하여 요청을 시뮬레이션하고 작업자가 어떻게 응답하는지 확인할 수 있습니다.
          • 작업자 배포:
            • 테스트가 만족스러우면 '저장 및 배포'를 클릭하여 작업자를 활성화하세요.
          • 작업자 경로 설정:
          cloudflare 작업자 경로
          • 배포 후 작업자의 "트리거" 탭으로 이동합니다.
          • 다음과 같이 도메인과 일치하는 경로를 추가하세요. *recommends.link/*.
          • 이렇게 하면 도메인에 대한 모든 요청이 이 작업자에 의해 처리됩니다.
          • 설정 확인:
            • 몇 가지 리디렉션 경로에 액세스해 보세요(예: https://recommends.link/url-shortener-guide) 예상대로 작동하는지 확인합니다.
            • Cloudflare 대시보드의 작업자 로그를 확인하여 콘솔 출력을 확인하고 경로가 올바르게 처리되고 있는지 확인하세요.

          4단계: 추가 사용자 정의(선택 사항)

          Cloudflare KV를 사용한 동적 리디렉션

          리디렉션 시스템을 더욱 유연하고 쉽게 관리할 수 있도록 Cloudflare KV(키-값) 스토리지를 사용하여 리디렉션을 저장할 수 있습니다.

          KV 네임스페이스를 생성합니다:

          • Cloudflare 대시보드에서 작업자 > KV로 이동합니다. "네임스페이스 생성"을 클릭하고 이름을 지정합니다(예: "REDIRECT_MAP").
          KV 네임스페이스를 작업자에 바인딩합니다.
          • 작업자 설정으로 이동합니다. "KV 네임스페이스 바인딩"에서 새 바인딩을 추가합니다. KV 네임스페이스를 선택하고 변수 이름(예: REDIRECTS)을 지정합니다.
          KV를 사용하도록 작업자 스크립트를 수정합니다.

             기본 내보내기 {
          비동기 페치(요청, 환경) {
          const url = 새 URL(request.url);
          const 경로 = url.pathname.toLowerCase().replace(/^\//, '').split('/')[0];

          const 위치 = env.REDIRECTS.get(path)을 기다립니다;

          if (위치) {
          return Response.redirect(location, 301);
          }

          return new Response(`찾을 수 없음: ${path}`, { status: 404 });
          },
          };

          이제 작업자 코드를 변경하지 않고도 KV 스토어를 수정하여 리디렉션을 추가, 업데이트 또는 제거할 수 있습니다.

          매개변수화된 리디렉션

          리디렉션에 동적 매개변수를 허용합니다.

               기본 내보내기 {
            비동기 페치(요청, 환경) {
            const url = 새 URL(request.url);
            const [경로, ...params] = url.pathname.toLowerCase().replace(/^\//, '').split('/');

            위치 = 대기 env.REDIRECTS.get(경로);

            if (위치) {
            // 자리표시자를 실제 매개변수로 대체합니다.
            params.forEach((param, index) => {
            위치 = location.replace(`{${index}}`, param);
            });
            return Response.redirect(location, 301);
            }

            return new Response(`찾을 수 없음: ${path}`, { status: 404 });
            },
            };

            이 설정을 사용하면 "product": "https://mystore.com/item/{0}/details"와 같은 KV 항목이 있고 이를 다음과 같이 사용할 수 있습니다. yourshortlink.com/product/12345.

            클릭 추적 및 분석

            리디렉션 이벤트를 기록하여 기본 분석을 구현합니다.

                 기본 내보내기 {
              비동기 페치(요청, 환경) {
              const url = 새 URL(request.url);
              const 경로 = url.pathname.toLowerCase().replace(/^\//, '').split('/')[0];

              const 위치 = env.REDIRECTS.get(path)을 기다립니다;

              if (위치) {
              // 리디렉션 이벤트를 기록합니다.
              wait env.REDIRECTS.put(`${path}_clicks`, (parseInt(await env.REDIRECTS.get(`${path}_clicks`) || '0') + 1).toString());
              return Response.redirect(location, 301);
              }

              return new Response(`찾을 수 없음: ${path}`, { status: 404 });
              },
              };

              사용자 정의 오류 페이지

              일반 텍스트 404 응답 대신 사용자 정의 HTML 페이지를 반환합니다.

                   const notFoundPage = `





                링크를 찾을 수 없습니다

                body { 글꼴 계열: Arial, sans-serif; 텍스트 정렬: 중앙; 패딩 상단: 50px; }



                이런! 링크를 찾을 수 없습니다
                찾고 있는 짧은 링크가 존재하지 않습니다.


                `;

                // 가져오기 함수에서:
                새 응답 반환(notFoundPage, {
                상태: 404,
                헤더: { '콘텐츠 유형': 'text/html' }
                });

                속도 제한

                남용을 방지하기 위해 기본 속도 제한을 구현합니다.

                     기본 내보내기 {
                  비동기 페치(요청, 환경) {
                  const ip = request.headers.get('CF-Connecting-IP');
                  const rateLimitKey = `ratelimit:${ip}`;
                  const currentRequests = parsInt(await env.REDIRECTS.get(rateLimitKey) || '0');

                  if (currentRequests > 100) { // 분당 요청 100개 제한
                  return new Response('속도 제한 초과', { status: 429 });
                  }

                  wait env.REDIRECTS.put(rateLimitKey, (currentRequests + 1).toString(), {expirationTtl: 60});

                  // 리디렉션 로직의 나머지 부분은 여기에 있습니다.
                  },
                  };

                  A / B 테스트

                  리디렉션에 대한 간단한 A/B 테스트를 구현합니다.

                       기본 내보내기 {
                    비동기 페치(요청, 환경) {
                    const url = 새 URL(request.url);
                    const 경로 = url.pathname.toLowerCase().replace(/^\//, '').split('/')[0];

                    const locationA = env.REDIRECTS.get(`${path}_A`)를 기다립니다.
                    const locationB = env.REDIRECTS.get(`${path}_B`)을 기다립니다.

                    if (위치A && 위치B) {
                    const 위치 = Math.random() < 0.5 ? 위치A : 위치B;
                    return Response.redirect(location, 301);
                    }

                    // A/B 테스트가 설정되지 않은 경우 일반 리디렉션으로 대체
                    const 위치 = env.REDIRECTS.get(path)을 기다립니다;
                    if (위치) {
                    return Response.redirect(location, 301);
                    }

                    return new Response(`찾을 수 없음: ${path}`, { status: 404 });
                    },
                    };

                    이러한 사용자 정의 및 확장은 대량 리디렉션 시스템에 중요한 기능을 추가하여 시스템을 더욱 유연하고 강력하며 유익하게 만듭니다. 이러한 각 기능은 특정 요구 사항과 사용 사례에 따라 더욱 구체화되고 확장될 수 있습니다.

                    이 블로그 게시물 전반에 걸쳐 우리는 Cloudflare Workers를 사용하여 강력하고 유연한 사용자 지정 URL 단축기를 만드는 방법을 살펴보았습니다. 이 솔루션은 대규모로 짧은 링크를 생성하는 무료이고 효율적인 접근 방식을 제공합니다.

                    TL; DR :

                    1. Cloudflare Workers는 전역 배포 및 짧은 대기 시간으로 사용자 지정 리디렉션 논리를 구현하기 위한 서버리스 플랫폼을 제공합니다.
                    2. 적절한 DNS 구성과 작업자 경로 설정은 사용자 지정 도메인을 작업자에 연결하는 데 중요합니다.
                    3. 간단한 JavaScript 기반 작업자는 복잡한 리디렉션 시나리오를 효율적으로 처리할 수 있습니다.
                    4. Cloudflare의 키-값(KV) 저장소를 활용하여 동적이고 쉽게 관리할 수 있는 리디렉션 맵을 생성할 수 있습니다.
                    5. 매개변수화된 리디렉션, 클릭 추적, 사용자 정의 오류 페이지, 속도 제한, A/B 테스트와 같은 고급 기능을 Worker 생태계 내에서 구현할 수 있습니다.
                    6. 이 시스템은 기존 시스템에 비해 상당한 이점을 제공합니다. 리디렉션 방법, 향상된 성능, 간편한 관리 및 향상된 유연성을 포함합니다.

                    우리가 구축한 솔루션은 다음과 같은 여러 가지 이점을 제공합니다.

                    • 확장성: 성능 저하 없이 수백만 건의 리디렉션을 처리합니다.
                    • 유연성: 핵심 로직을 변경하지 않고도 리디렉션을 쉽게 추가, 수정, 제거할 수 있습니다.
                    • 퍼포먼스: 전 세계적으로 빠른 리디렉션을 위해 Cloudflare의 글로벌 네트워크를 활용합니다.
                    • 맞춤설정으로 들어간다: 분석 및 A/B 테스트와 같은 고급 기능을 허용합니다.
                    • 비용 효율성: 서버리스 아키텍처를 활용하여 잠재적으로 호스팅 비용을 절감합니다.
                    • 무료 대안 Bit.ly와 같은 인기 있는 서비스나 너의 사용자 정의 도메인에 브랜드 짧은 링크를 생성합니다.

                    이제 Cloudflare Worker 기반 리디렉션 시스템의 성능과 유연성을 이해했으므로 이를 실행에 옮길 차례입니다.

                    1. 아직 가입하지 않았다면 Cloudflare 계정에 가입하고 Workers 플랫폼을 숙지하세요.
                    2. 귀하의 브랜드 짧은 링크 또는 대량 리디렉션을 위해 이 시스템을 구현하십시오.
                    3. 귀하의 특정 요구 사항에 맞게 시스템을 맞춤화하기 위해 논의한 고급 기능을 실험해 보십시오.
                    4. 아래 댓글 섹션에서 경험을 공유하거나 질문하십시오. 귀하의 통찰력은 커뮤니티의 다른 사람들에게 도움이 될 수 있습니다!
                    5. 고급 사용 사례나 사용자 지정 구현을 원하시면 Cloudflare Workers 전문가에게 문의하거나 컨설팅 서비스를 이용해 보세요.

                    호기심을 갖고, 계속 학습하고, 주저하지 말고 Cloudflare Workers와 같은 도구를 사용하여 가능한 것의 한계를 뛰어넘으세요.

                    저자에 관하여

                    매트 알 그렌

                    Mathias Ahlgren은 CEO이자 창립자입니다. Website Rating, 편집자와 작가로 구성된 글로벌 팀을 이끌고 있습니다. 그는 정보 과학 및 경영학 석사 학위를 보유하고 있습니다. 그의 경력은 대학 시절 초기 웹 개발 경험을 거쳐 SEO로 전환되었습니다. SEO, 디지털 마케팅, 웹 개발 분야에서 15년 이상의 경력을 보유하고 있습니다. 그의 초점에는 사이버 보안 인증서로 입증되는 웹사이트 보안도 포함됩니다. 이러한 다양한 전문 지식은 그의 리더십을 뒷받침합니다. Website Rating.

                    홈페이지 » 리소스 및 도구 » 무료 사용자 지정 도메인 URL 단축기 만들기(Cloudflare Workers 사용)
                    공유 대상...