Skip Navigation
Show nav
Dev Center
  • Get Started
  • ドキュメント
  • Changelog
  • Search
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • ドキュメント
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log inorSign up
View categories

Categories

  • Heroku のアーキテクチャ
    • コンピューティング (dyno)
      • dyno の管理
      • dyno の概念
      • dyno の動作
      • dyno の参照資料
      • dyno のトラブルシューティング
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • 開発者ツール
    • コマンドライン
    • Heroku の VS Code 拡張機能
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリーとインテグレーション
    • 継続的統合
  • 言語サポート
    • Node.js
      • Node.js アプリのトラブルシューティング
      • Heroku での Node.js の動作
      • Node.js の操作
    • Ruby
      • Rails のサポート
      • Bundler の使用
      • Ruby の操作
      • Heroku での Ruby の動作
      • Ruby アプリのトラブルシューティング
    • Python
      • Python の操作
      • Python でのバックグラウンドジョブ
      • Heroku での Python の動作
      • Django の使用
    • Java
      • Heroku での Java の動作
      • Java の操作
      • Maven の使用
      • Spring Boot の使用
      • Java アプリのトラブルシューティング
    • PHP
      • PHP の操作
      • Heroku での PHP の動作
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres スターターガイド
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
      • Heroku Postgres への移行
    • Heroku Key-Value Store
    • Apache Kafka on Heroku
    • その他のデータストア
  • AI
    • Vector Database
    • Working with AI
    • Heroku Inference
      • AI Models
      • Inference Essentials
      • Heroku Inference Quick Start Guides
      • Inference API
    • Model Context Protocol
  • モニタリングとメトリクス
    • ログ記録
  • アプリのパフォーマンス
  • アドオン
    • すべてのアドオン
  • 共同作業
  • セキュリティ
    • アプリのセキュリティ
    • ID と認証
      • シングルサインオン (SSO)
    • Private Space
      • インフラストラクチャネットワーキング
    • コンプライアンス
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Team
    • Heroku Connect (Salesforce 同期)
      • Heroku Connect の管理
      • Heroku Connect のリファレンス
      • Heroku Connect のトラブルシューティング
  • パターンとベストプラクティス
  • Heroku の拡張
    • Platform API
    • アプリの Webhook
    • Heroku Labs
    • アドオンのビルド
      • アドオン開発のタスク
      • アドオン API
      • アドオンのガイドラインと要件
    • CLI プラグインのビルド
    • 開発ビルドパック
    • Dev Center
  • アカウントと請求
  • トラブルシューティングとサポート
  • Salesforce とのインテグレーション
  • セキュリティ
  • Private Space
  • Private Space でのルーティング

Private Space でのルーティング

日本語 — Switch to English

最終更新日 2024年12月03日(火)

Table of Contents

  • Heroku エラーコード
  • サイズの大きい Cookie とヘッダーのサポート
  • 応答本体サイズのログ記録
  • dyno 接続の再利用
  • 応答本体のバッファリング
  • メンテナンスモードとカスタムエラーページ
  • Content-Length および Content-Type ヘッダー
  • クエリ文字列のログ記録
  • SNI サーバー名と host ヘッダーの一致
  • SSL セキュリティ
  • HTTP 1.0
  • HTTP/2
  • ステータス行
  • サポートされている HTTP メソッド
  • カスタム DNS リゾルバー

Private Space でのルーターは、Common Runtime 内のルーターとは少し動作が異なります。この記事では、その違いについて説明します。Common Runtime と Private Space に共通のルーティング動作については、「HTTP ルーティング​」を参照してください。

Heroku エラーコード

Common Runtime の Heroku エラーコード​のうち、Private Space のルーターでは以下のエラーをサポートしています。

  • H10 - App crashed (アプリがクラッシュしました)
  • H11 - Backlog too deep (バックログが深すぎます)
  • H12 - Request timeout (リクエストタイムアウト)
  • H13 - Connection closed without response (応答なしで接続が閉じられました)
  • H15 - Idle connection (アイドル接続)
  • H17 - Poorly formatted HTTP response (HTTP 応答の形式が不完全です)
  • H18 - Server Request Interrupted (サーバーリクエストが中断されました)
  • H19 - Backend connection timeout (バックエンド接続タイムアウト)
  • H21 - Backend connection refused (バックエンド接続が拒否されました)
  • H25 - HTTP Restriction: Oversized cookies (HTTP の制限: Cookie のサイズが大きすぎます)
  • H25 - HTTP Restriction: Oversized header (HTTP の制限: ヘッダーのサイズが大きすぎます)
  • H25 - HTTP Restriction: Oversized status line (HTTP の制限: ステータス行のサイズが大きすぎます)
  • H26 - Request Error: Unsupported expect header value (リクエストエラー: サポートされていない expect ヘッダーの値です)
  • H26 - Request Error: Bad header (リクエストエラー: ヘッダーが不正です)
  • H27 - Client Request Interrupted (クライアントリクエストが中断されました)
  • H28 - Client Connection Idle (クライアント接続がアイドル状態です)
  • H32 - TLS Certificate Mismatch (H32 - TLS 証明書の不一致)
  • H99 - Platform error (プラットフォームエラー)

サイズの大きい Cookie とヘッダーのサポート

Private Space のルーターでは、個々の HTTP ヘッダーのサイズは 512 KB までサポートされます。

応答本体サイズのログ記録

Private Space のルーターでは、アプリログの bytes​ フィールドで応答本体のサイズのみをカウントします。Common Runtime の Heroku ルーターでは、ステータス行、ヘッダー、および本体サイズをカウントします​。

dyno 接続の再利用

持続的 HTTP 接続​をサポートするアプリケーションの場合、Private Space のルーターでは、dyno への接続を複数のリクエストで再利用する場合があります。これらの再利用される接続は、クライアントソフトウェアと Heroku プラットフォームの間の接続からは独立しています。

応答本体のバッファリング

Private Space のルーターでは、小さな本体の断片をクライアントに多数送信することを避けるために、応答本体を内部でバッファリングする場合があります。これにより、ほとんどのアプリケーションのパフォーマンスが向上しますが、低レイテンシーのストリーミングを必要とするアプリケーションには悪影響が及ぶ可能性があります。小さな本体の断片は最大 10 ミリ秒にわたってバッファリングされますが、ネットワークの特性のためにクライアントでバッファリング時間が延びる可能性があります。

メンテナンスモードとカスタムエラーページ

これらの機能は Fir​ 世代のスペースではまだ利用できません。これらの機能が追加されたときに通知を受け取るには、Changelog​ の受信登録を行ってください。

Cedar​ 世代の Private Space では、メンテナンスモード​とカスタムエラーページ​の両方がサポートされています。ただし、Common Runtime と違って、Private Space のルーターでメンテナンスとカスタムエラーページを提供するためには、少なくとも 1 つの Web dyno が実行されている必要があります。

Content-Length および Content-Type ヘッダー

Common Runtime のルーティングでは、リクエストに複数の Content-Length​ ヘッダーがあっても、同じ値が含まれている限りは許可されます。Private Space のルーターはこれと異なり、複数の Content-Length​ ヘッダーが存在するときは常に 400 Bad Response​ を返します。

また Private Space のルーターでは、MIME スニッフィング標準​に基づき、dyno の応答に Content-Type​ ヘッダーがない場合はリクエストでこのヘッダーを設定しようとします。

クエリ文字列のログ記録

Private Space のルーターによって生成されるログメッセージの path​ フィールドには、(URL または GET パラメータとも呼ばれる) クエリ文字列パラメータが含まれています。一部のアプリケーションでは、クエリ文字列を使用して機密性の高いデータを渡します。たとえば、OAuth アプリケーションでは通常、クエリ文字列パラメータを使用してサービス間で一時トークンを渡します。

SNI サーバー名と host ヘッダーの一致

一部のクライアントおよび CDN では、Heroku アプリケーションに接続するとき、リクエストの host ヘッダーとは異なる SNI サーバー名の値を設定します。Heroku では、Private Space アプリケーションにおいて、アプリケーションのパブリック DNS エントリに対し、内部的な Space 名を指す CNAME レコードを設定することを推奨しています。これは通常、desolate-dawn-42.fathomless-ravine-43.herokuspace.com​ 形式のレコードを指す www.example-app.com​ カスタムドメインのレコードです。

両方の名前が同じアプリケーションのドメインとして設定されている限り、サーバー名の値と host ヘッダーの値が一致しなくても許容されます。desolate-dawn-42.fathomless-ravine-43.herokuspace.com​形式のドメインは、Heroku によって設定および管理されます。

Private Space では、アプリに接続するために SNI のクライアントサポートが要求されます。

SSL セキュリティ

Cedar​ 世代の Private Space 内のアプリでは、クライアントとの TLS 接続のネゴシエーションに使用する暗号スイートを選択できます。すべての新しいアプリは、TLS v1.2 および 1.3 のみをサポートする spaces-tls-salesforce​ スイートを使用して作成されます。Fir​ 世代のスペースは spaces-tls-salesforce​ のみをサポートします。

利用可能な Private Space 暗号スイート

Fir​ 世代のスペースは spaces-tls-salesforce​ のデフォルトの暗号のみをサポートします。暗号機能フラグを設定しても Fir では動作しません。

 

spaces-tls-legacy​ および spaces-strict-tls​ 暗号は 2023 年 4 月でサポートが終了しました。セキュリティのベストプラクティスのために、spaces-tls-salesforce​ または spaces-tls-modern​ のみを使用して Private Space 内のアプリを設定することをお勧めします。

Private Space 内のアプリは、次の暗号スイートのうち 1 つ以上を使用して設定できます。

  • spaces-tls-salesforce​ Salesforce TLS ガイドライン​に準拠し、すべての新しいアプリで使用されます。
  • spaces-tls-modern​ モダンスイートは TLSv1.2 および TLSv1.3 のみをサポートします。このスイートは、最高のセキュリティを提供し、比較的新しいブラウザやモバイル/IoT クライアントで機能します。

TLSv1.3 暗号スイート

TLSv1.3 では暗号スイート選択の動作が異なり、このセクションで説明する暗号スイート設定は、TLSv1.3 よりも前の TLS バージョンのみに適用されます。TLSv1.3 の暗号スイートは変更できず、次のデフォルトの暗号スイートがサポートされています。

  • TLS_AES_128_GCM_SHA256
  • TLS_AES_256_GCM_SHA384
  • TLS_CHACHA20_POLY1305_SHA256

Salesforce 暗号スイート

Salesforce スイートはすべての新しいアプリで標準であり、アプリで Salesforce TLS ガイドライン​を使用していることを保証するための簡単な方法を提供します。Heroku の現在の設定では TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384​ または TLS_RSA_WITH_AES_256_CBC_SHA256​ 暗号スイートをサポートしていないことに注意してください。

暗号

  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_RSA_WITH_AES_256_GCM_SHA384
  • TLS_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_128_CBC_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA
  • TLS_RSA_WITH_AES_128_CBC_SHA

モダン暗号スイート

モダンスイートは TLSv1.2 のみをサポートします。このスイートは、最高のセキュリティを提供し、比較的新しいブラウザやモバイル/IoT クライアントで機能します。このスイートを適用するには、示されているように、他のスイートを無効にして spaces-tls-modern​ スイートを有効にします。

$ heroku features:disable spaces-tls-salesforce --app desolate-dawn-42
$ heroku features:enable spaces-tls-modern --app desolate-dawn-42
$ heroku features:disable spaces-tls-legacy --app desolate-dawn-42
$ heroku features:disable spaces-strict-tls --app desolate-dawn-42

暗号

  • TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
  • TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256

デフォルトの暗号

デフォルトスイートは TLSv1.2 および TLSv1.3 をサポートします。このスイートは高いセキュリティを提供し、幅広いブラウザおよびクライアントと互換性があります。デフォルトの TLS 動作にするには、示されているように、他のすべての TLS 暗号スイート機能を無効にします。

デフォルトの暗号スイートは、他のすべてのスイートが無効になった後に残る暗号です。新しいアプリは spaces-tls-salesforce​ 機能を有効にして作成されます。

$ heroku features:disable spaces-tls-salesforce --app desolate-dawn-42
$ heroku features:disable spaces-tls-modern --app desolate-dawn-42
$ heroku features:disable spaces-tls-legacy --app desolate-dawn-42
$ heroku features:disable spaces-strict-tls --app desolate-dawn-42

暗号

  • TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
  • TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_128_CBC_SHA256
  • TLS_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

[非推奨] ストリクト

spaces-strict-tls​ 機能フラグを有効にした場合、Private Space のルーターは TLS バージョン 1.1 および 1.2 をサポートします。このフラグは非推奨であり、以前の Heroku TLS ターミネーション動作との後方互換性のためにのみ使用してください。

$ heroku features:disable spaces-tls-salesforce --app desolate-dawn-42
$ heroku features:disable spaces-tls-modern --app desolate-dawn-42
$ heroku features:disable spaces-tls-legacy --app desolate-dawn-42
$ heroku features:enable spaces-strict-tls --app desolate-dawn-42

暗号

  • TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
  • TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

HTTP 1.0

Private Space のルーターでは、HTTP 1.0 リクエストを HTTP 1.1 リクエストに変換して dyno に転送します。元のリクエストで HTTP 1.0 を使用していた場合、dyno からの HTTP 1.1 応答は HTTP 1.0 応答としてクライアントに送信されます。

Common Runtime のルーターでは HTTP 1.0 リクエストを HTTP 1.1 リクエストに変換しますが、HTTP 1.1 応答から HTTP 1.0 応答への逆変換は行いません。

HTTP/2

考慮事項

  • 有効な TLS 証明書が必要です。Heroku ACM​ を使用することをお勧めします。
  • HTTP/2 は Heroku ルーターで終了し、ルーターからアプリには HTTP/1.1 を転送します。

Private Spaces と Shield Private Spaces を利用しているお客様は、Heroku のデフォルトドメインまたはカスタムドメインのいずれかを使用して HTTP/2 トラフィックを処理できます。

Spaces 内のアプリの HTTP/2 を有効/無効にする

​

Fir​ 世代のアプリでは HTTP/2 を無効にできません。HTTP/2 は常に有効です。

HTTP/2 を有効にするには、次のコマンドを実行します。

$ heroku features:enable spaces-http2 -a <app name>

次の例のように、Heroku ルーターログ​の protocol​ 値を参照することで、アプリが HTTP/2 リクエストを受信して​​いることを確認できます。

2024-04-26T16:58:32.943253+00:00 heroku[router]: at=info method=GET path="/" host=my-app.example.com request_id=6903a168-b79b-ec27-03c8-b8f64d8d8792 fwd=138.68.186.89 dyno=web.1 connect=0ms service=0ms status=200 bytes=0 protocol=http2.0 tls_version=tls1.3

HTTP/2 を無効にするには、次のコマンドを実行します。

$ heroku features:disable spaces-http2 -a <app name>

ステータス行

Private Space のルーターは、CRLF​ (\r\n​) で終わる行を考慮せず、リクエストの最初の行全体 (最初の \n​ 文字まで) をステータス行として扱います。ステータス行の終わりにベア改行を許可するのは、Nginx のような HTTP サーバーで一般的です。

サポートされている HTTP メソッド

Private Space のルーターでは、RFC で定義されていないものも含め、あらゆる HTTP メソッド (“動詞” と呼ぶ場合もある) をサポートしています。

カスタム DNS リゾルバー

カスタム DNS リゾルバーは、Fir​ 世代のスペースでは使用できません。

Private Space のアプリでは、dyno の最初の DNS サーバーターゲットとして単一の DNS リゾルバーを挿入し、その後に標準の Private Space DNS ターゲットを挿入することがサポートされています。この機能を使用するには、目的のアプリで spaces-extra-resolver​ フラグを有効にしてから、HEROKU_EXTRA_RESOLVER​ 環境設定を設定する必要があります。

次に例を示します。

$ heroku labs:enable spaces-extra-resolver -a "$APP_NAME"
$ heroku config:set -a "$APP_NAME" HEROKU_EXTRA_RESOLVER=DNS-Server-IP

関連カテゴリー

  • Private Space
Shield Spaces の Private Space Logging Private Space アプリのルーティングヘルスメトリクス

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure
  • .NET

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing
  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Github
  • LinkedIn
  • © 2025 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
  • heroku.com
  • Legal
  • Terms of Service
  • Privacy Information
  • Responsible Disclosure
  • Trust
  • Contact
  • Cookie Preferences
  • Your Privacy Choices