INTEGRITY Dokumentace

Migrace bez výpadku

Pokud koncový zákazník už provozuje web na jiné CDN, přesměrování jeho CNAME na váš záložní origin Cloudflare vytvoří krátké okno, během kterého Cloudflare ještě nemůže jeho provoz proxovat. Předběžné ověření vám umožní potvrdit vlastnictví hostitelského názvu a volitelně předem vydat certifikát TLS před přepnutí DNS, takže migrace proběhne bez výpadku.

Postup migrace

  1. Vytvořte vlastní hostname přes API.
  2. Předem ověřte vlastnictví hostitelského názvu pomocí HTTP tokenu nebo DNS záznamu TXT.
  3. Vystavte certifikát TLS ještě před přepnutím DNS.
  4. Potvrďte, že hostname je active.
  5. Aktualizujte CNAME záznam koncového zákazníka: provoz se přepne bez výpadku.

Krok 1: Vytvořte vlastní hostitelský název

Zavolejte Create Custom Hostname endpoint. Všimněte si ownership_verification a ownership_verification_http polí v odpovědi, budete je potřebovat v dalším kroku.

Create custom hostname
curl https://api.cloudflare.com/client/v4/zones/{zone_id}/custom_hostnames \
  --header "Authorization: Bearer <API_TOKEN>" \
  --header "Content-Type: application/json" \
  --data '{
    "hostname": "app.example.com",
    "ssl": {
      "method": "http",
      "type": "dv",
      "settings": {
        "http2": "on",
        "min_tls_version": "1.2"
      }
    }
  }'
Ukázková odpověď (zkrácená)
{
  "result": {
    "id": "24c8c68e-bec2-49b6-868e-f06373780630",
    "hostname": "app.example.com",
    "status": "pending",
    "verification_errors": ["custom hostname does not CNAME to this zone."],
    "ownership_verification": {
      "type": "txt",
      "name": "_cf-custom-hostname.app.example.com",
      "value": "0e2d5a7f-1548-4f27-8c05-b577cb14f4ec"
    },
    "ownership_verification_http": {
      "http_url": "http://app.example.com/.well-known/cf-custom-hostname-challenge/24c8c68e-bec2-49b6-868e-f06373780630",
      "http_body": "48b409f6-c886-406b-8cbc-0fbf59983555"
    },
    "created_at": "2020-03-04T20:06:04.117122Z"
  }
}

verification_errors pole zobrazí custom hostname does not CNAME to this zone v této fázi, což je očekávané chování. Chyba zmizí, jakmile se dokončí předběžné ověření.


Krok 2: Předběžně ověřte vlastnictví hostitelského názvu

Vyberte metodu, která odpovídá situaci vašeho koncového zákazníka.

Možnost A: token HTTP (koncový zákazník nespravuje DNS)

Tuto metodu použijte, pokud koncový zákazník nemůže aktualizovat své autoritativní DNS, nebo pokud chcete ověření provést sami.

  1. Zkopírujte http_url a http_body z ownership_verification_http objekt v odpovědi Create Custom Hostname.

  2. Nechte koncového zákazníka zpřístupnit http_body hodnotu na http_url cestu na svém origin serveru. Například v nginx:

    příklad pro nginx
    location /.well-known/cf-custom-hostname-challenge/24c8c68e-bec2-49b6-868e-f06373780630 {
        return 200 "48b409f6-c886-406b-8cbc-0fbf59983555\n";
    }

    Cloudflare tuto adresu URL prochází pomocí User-Agent: Cloudflare Custom Hostname Verification. Origin musí odpovědět s 200 stav a přesnou hodnotu tokenu v těle požadavku.

  3. Počkejte několik minut, než Cloudflare token načte. Stav hostitelského názvu se změní z pending na active jakmile je vlastnictví potvrzeno.

Možnost B: záznam TXT (koncový zákazník spravuje DNS)

Tuto metodu použijte, pokud koncový zákazník může přidat DNS záznam u svého autoritativního poskytovatele DNS.

  1. Zkopírujte name a value z ownership_verification objekt v odpovědi Create Custom Hostname.

  2. Nechte koncového zákazníka přidat TXT záznam u svého poskytovatele DNS:

    Typ Název Hodnota
    TXT _cf-custom-hostname.app.example.com 0e2d5a7f-1548-4f27-8c05-b577cb14f4ec
  3. Počkejte několik minut, než Cloudflare záznam zjistí. Stav hostitelského názvu se změní na active jakmile je vlastnictví potvrzeno.

  4. Jakmile je hostitelský název aktivní, může koncový zákazník odstranit záznam TXT.


Krok 3: Předběžně vystavte certifikát TLS

Předběžné vystavení certifikátu zajistí, že při přepnutí nedojde k chybě TLS. Bez tohoto kroku nelze certifikát vystavit dříve, než záznam CNAME koncového zákazníka začne směřovat na Cloudflare, což znamená ssl.status zůstane pending prostřednictvím změny DNS. Vyberte jednu z těchto metod:


Krok 4: Potvrďte, že je hostitelský název aktivní

Než aktualizujete DNS, ověřte, že jsou hostitelský název i certifikát připraveny.

Získání podrobností o vlastním hostname
curl https://api.cloudflare.com/client/v4/zones/{zone_id}/custom_hostnames/{custom_hostname_id} \
  --header "Authorization: Bearer <API_TOKEN>"
Ukázková odpověď (zkrácená)
{
  "result": {
    "id": "24c8c68e-bec2-49b6-868e-f06373780630",
    "hostname": "app.example.com",
    "status": "active",
    "ssl": {
      "status": "active"
    }
  }
}

Počkejte, až obě result.status a result.ssl.status jsou active než budete pokračovat. Pokud je kterékoli z nich stále pending, počkejte a zkuste dotaz znovu.


Krok 5: Aktualizujte CNAME koncového zákazníka

Jakmile result.status je active (a ssl.status je active také, pokud jste certifikát předem vydali v kroku 3), požádejte koncového klienta, aby aktualizoval svůj CNAME záznam tak, aby směřoval na váš záložní origin:

Typ Název Hodnota
CNAME app fallback.yoursaaszone.com

Provoz se začne směrovat přes Cloudflare, jakmile se DNS propaguje. Protože byl hostitelský název už ověřen a certifikát už byl vydán, během přechodu nedochází k žádnému výpadku ani chybě certifikátu.