INTEGRITY Dokumentace

Konfigurační soubor

Lokálně spravované tunely běží jako instance cloudflared na vašem počítači. Můžete nakonfigurovat cloudflared vlastnosti úpravou parametry příkazového řádku nebo úpravou tunelu konfigurační soubor.

CLI poskytuje rychlý způsob, jak spravovat konfigurace, pokud připojujete jedinou službu přes cloudflared. Konfigurační soubor tunelu se hodí, pokud připojujete více služeb a potřebujete nastavit vlastnosti nebo výjimky pro konkrétní originy. V konfiguračním souboru můžete definovat vlastnosti nejvyšší úrovně pro váš cloudflared instance i vlastnosti specifické pro origin. Úplný seznam možností konfigurace zobrazíte zadáním cloudflared tunnel help ve vašem terminálu.

Pokud konfigurační soubor chybí, cloudflared bude proxovat odchozí provoz přes port 8080.

Struktura souborů pro privátní sítě

Pokud jste zpřístupnění privátní sítě koncovým uživatelům používajícím Cloudflare One Client musíte přidat warp-routing klíč a nastavte jej na true:

tunnel: <Tunnel-UUID>
credentials-file: /path/<Tunnel-UUID>.json
warp-routing:
  enabled: true

Struktura souborů pro publikované aplikace

Pokud zpřístupňujete lokální služby internetu, můžete každé službě přiřadit veřejný hostname:

tunnel: 6ff42ae2-765d-4adf-8112-31c55c1551ef
credentials-file: /root/.cloudflared/6ff42ae2-765d-4adf-8112-31c55c1551ef.json

ingress:
  - hostname: gitlab.widgetcorp.tech
    service: http://localhost:80
  - hostname: gitlab-ssh.widgetcorp.tech
    service: ssh://localhost:22
  - service: http_status:404

Konfigurační soubory obsahující pravidla ingress musí vždy na konci obsahovat obecné pravidlo, které soubor uzavírá. V tomto příkladu cloudflared odpoví 404 stavový kód, pokud požadavek neodpovídá žádnému z předchozích názvů hostitelů.

Jak je provoz porovnáván

Když cloudflared přijme příchozí požadavek, vyhodnotí jednotlivá pravidla ingress od shora dolů, aby zjistil, které pravidlo požadavku odpovídá. Pravidla mohou odpovídat názvu hostitele nebo cestě příchozího požadavku, případně oběma. Pokud pravidlo nemá zadaný název hostitele, budou odpovídat všechny názvy hostitelů. Pokud pravidlo nemá zadanou cestu, budou odpovídat všechny cesty.

Poslední vstupní pravidlo musí být catch-all pravidlo, které odpovídá veškerému provozu.

Zde je ukázkový konfigurační soubor, který definuje několik pravidel:

tunnel: 6ff42ae2-765d-4adf-8112-31c55c1551ef
credentials-file: /root/.cloudflared/6ff42ae2-765d-4adf-8112-31c55c1551ef.json

ingress:
  # Rules map traffic from a hostname to a local service:
  - hostname: example.com
    service: https://localhost:8000
  # Rules can match the request's path to a regular expression:
  - hostname: static.example.com
    path: \.(jpg|png|css|js)$
    service: https://localhost:8001
  # Rules can match the request's hostname to a wildcard character:
  - hostname: "*.example.com"
    service: https://localhost:8002
  # An example of a catch-all rule:
  - service: https://localhost:8003

Zástupné znaky

Pomocí zástupných znaků můžete provoz shodovat s více subdoménami najednou. Pokud například nastavíte hostname klíč na *.example.com, obě alpha.example.com a beta.example.com nasměruje provoz na váš origin server. cloudflared nepodporuje zástupné znaky uprostřed názvu hostitele, například test.*.example.com.

Můžete také zadat regulární výrazy pro path klíč. Například pokud hostname je static.example.com a path je \.(jpg|png|css|js)$, odpovídající adresy URL mohou zahrnovat https://static.example.com/data.js, http://static.example.com/images/photo.jpg, a tak dále. Cloudflare zpracovává regulární výraz cesty pomocí Přejít syntax balíček.

Služby

Kromě HTTP cloudflared podporuje protokoly jako SSH, RDP, libovolné služby TCP a Unix sockets. Provoz můžete směrovat také do vestavěného hello_world testovací server nebo odpovídat na provoz stavovým kódem HTTP. Úplný seznam podporovaných typů služeb najdete v Protokoly pro publikované aplikace.

tunnel: 6ff42ae2-765d-4adf-8112-31c55c1551ef
credentials-file: /root/.cloudflared/6ff42ae2-765d-4adf-8112-31c55c1551ef.json

ingress:
  # Example of a request over TCP:
  - hostname: example.com
    service: tcp://localhost:8000
  # Example of an HTTP request over a Unix socket:
  - hostname: staging.example.com
    service: unix:/home/production/echo.sock
  # Example of a request mapping to the Hello World test server:
  - hostname: test.example.com
    service: hello_world
  # Example of a rule responding to traffic with an HTTP status:
  - service: http_status:404

Konfigurace originu

Pokud potřebujete proxy provoz nasměrovat na více originů v rámci jedné instance cloudflared, můžete definovat způsob, jakým cloudflared odesílá požadavky na jednotlivé služby zadáním možnosti konfigurace jako součást vašich pravidel ingress.

V následujícím příkladu konfigurace nejvyšší úrovně connectTimeout: 30s nastavuje 30sekundový časový limit připojení pro všechny služby v rámci dané instance cloudflared. Pravidlo ingress pro service: localhost:8002 poté nakonfiguruje výjimku z konfigurace nejvyšší úrovně nastavením connectTimeout pro danou službu na 10s. Třicetivteřinový časový limit připojení platí i nadále pro všechny ostatní služby.

tunnel: 6ff42ae2-765d-4adf-8112-31c55c1551ef
credentials-file: /root/.cloudflared/6ff42ae2-765d-4adf-8112-31c55c1551ef.json
originRequest: # Top-level configuration
  connectTimeout: 30s

ingress:
  # The localhost:8000 service inherits all root-level configuration.
  # In other words, it will use a connectTimeout of 30 seconds.
  - hostname: example.com
    service: localhost:8000
  - hostname: example2.com
    service: localhost:8001
  # The localhost:8002 service overrides some root-level config.
  - service: localhost:8002
    originRequest:
      connectTimeout: 10s
      disableChunkedEncoding: true
  # Some built-in services such as `http_status` do not use any configuration.
  # The service below will simply respond with HTTP 404.
  - service: http_status:404

Ověřit pravidla ingress

Chcete-li ověřit pravidla ingress ve svém konfiguračním souboru, spusťte:

cloudflared tunnel ingress validate

Tím se zajistí, že sada pravidel ingress zadaná v konfiguračním souboru je platná.

Otestujte pravidla ingress

Chcete-li ověřit, že cloudflared nasměruje správný provoz na správnou lokální službu, použijte cloudflared tunnel ingress rule. Toto kontroluje adresu URL vůči každému pravidlu od prvního po poslední a zobrazí první pravidlo, které se shoduje. Například:

cloudflared tunnel ingress rule https://foo.example.com
Using rules from /usr/local/etc/cloudflared/config.yml
Matched rule #3
	hostname: *.example.com
	service: https://localhost:8000

Aktualizujte konfigurační soubor

Při provádění změn v konfiguračním souboru daného tunelu doporučujeme spoléhat se na cloudflared repliky a rozšířit novou konfiguraci s minimálním výpadkem.

  1. Máte cloudflared instance běžící s původní verzí konfiguračního souboru.
  2. Spusťte cloudflared replika běžící s aktualizovanou verzí konfiguračního souboru.
  3. Počkejte, až bude replika plně spuštěná a použitelná.
  4. Zastavte první instanci cloudflared.

Váš cloudflared nyní poběží s aktualizovanou verzí vašeho konfiguračního souboru.