Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

設定ファイル

最終更新 Markdown で表示Agent セットアップ

ローカル管理トンネルは、マシン上の cloudflared インスタンスとして動作します。cloudflared のプロパティは、コマンドラインパラメーター を変更するか、トンネルの 設定ファイル を編集して設定できます。

単一のサービスを cloudflared 経由で接続する場合、CLI で素早く設定できます。複数のサービスを接続し、特定のオリジン向けにプロパティや例外を設定する必要がある場合は、トンネル設定ファイルが役立ちます。設定ファイルでは、cloudflared インスタンス全体のトップレベルプロパティと、オリジン固有のプロパティ を定義できます。設定オプションの一覧は、ターミナルで cloudflared tunnel help を実行してください。

設定ファイルがない場合、cloudflared はポート 8080 経由でアウトバウンドトラフィックをプロキシします。

プライベートネットワーク向けのファイル構造

Cloudflare One Client を使うエンドユーザーに プライベートネットワークを公開する 場合は、warp-routing キーを追加し、 true に設定します。

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

公開アプリケーション向けのファイル構造

ローカルサービスをインターネットに公開する場合、各サービスに公開ホスト名を割り当てられます。

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

イングレスルールを含む設定ファイルは、必ずファイル末尾にキャッチオールルールを置く必要があります。この例では、リクエストが先行するどのホスト名にも一致しない場合、cloudflared404 ステータスコードで応答します。

トラフィックの照合方法

cloudflared は受信リクエストを受け取ると、上から下へ各イングレスルールを評価し、一致するルールを探します。ルールは受信リクエストのホスト名、パス、またはその両方に一致できます。ルールがホスト名を指定しない場合は、すべてのホスト名に一致します。ルールがパスを指定しない場合は、すべてのパスに一致します。

最後のイングレスルールは、すべてのトラフィックに一致するキャッチオールルールである必要があります。

複数のルールを指定する設定ファイルの例です。

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

ワイルドカード

ワイルドカードを使うと、複数のサブドメインのトラフィックを照合できます。たとえば hostname キーを *.example.com に設定すると、alpha.example.combeta.example.com の両方のトラフィックがオリジンへルーティングされます。cloudflared は、test.*.example.com のようにホスト名の途中にあるワイルドカードには対応していません。

path キーには正規表現も入力できます。たとえば hostnamestatic.example.compath\.(jpg|png|css|js)$ の場合、一致する URL には https://static.example.com/data.jshttp://static.example.com/images/photo.jpg などがあります。Cloudflare はパスの正規表現を Go の syntax パッケージ で解析します。

サービス

cloudflared は HTTP に加え、SSH、RDP、任意の TCP サービス、Unix ソケットなどのプロトコルに対応しています。組み込みの hello_world テストサーバーへトラフィックをルーティングしたり、HTTP ステータスで応答したりすることもできます。対応するサービスタイプの一覧は、公開アプリケーション向けプロトコル を参照してください。

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

オリジン設定

1 つの cloudflared インスタンス内で複数のオリジンへトラフィックをプロキシする場合、イングレスルールの一部として 設定オプション を指定し、各サービスへのリクエスト送信方法を定義できます。

次の例では、トップレベル設定の connectTimeout: 30s が、その cloudflared インスタンス内のすべてのサービスに 30 秒の接続タイムアウトを設定します。service: localhost:8002 のイングレスルールは、そのサービスの connectTimeout10s に設定し、トップレベル設定の例外を作ります。ほかのサービスには、引き続き 30 秒の接続タイムアウトが適用されます。

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

イングレスルールを検証する

設定ファイルのイングレスルールを検証するには、次を実行します。

cloudflared tunnel ingress validate

これにより、設定ファイルで指定したイングレスルールのセットが有効であることを確認できます。

イングレスルールをテストする

cloudflared が正しいトラフィックを正しいローカルサービスへプロキシすることを確認するには、cloudflared tunnel ingress rule を使います。URL を先頭から末尾まで各ルールと照合し、最初に一致したルールを表示します。例:

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

設定ファイルを更新する

特定のトンネルの設定ファイルを変更するときは、cloudflared レプリカ を使い、ダウンタイムを最小限にして新しい設定を反映することを推奨します。

  1. 元のバージョンの設定ファイルで cloudflared インスタンスを動かします。
  2. 更新後の設定ファイルで cloudflared レプリカを起動します。
  3. レプリカが完全に起動し、使えるようになるまで待ちます。
  4. 最初の cloudflared インスタンスを停止します。

これで cloudflared は、更新後の設定ファイルで動作します。

役に立ちましたか?