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 Management
      • Dyno Concepts
      • Dyno Behavior
      • Dyno Reference
      • Dyno Troubleshooting
    • スタック (オペレーティングシステムイメージ)
    • ネットワーキングと DNS
    • プラットフォームポリシー
    • プラットフォームの原則
  • Developer Tools
    • コマンドライン
    • Heroku VS Code Extension
  • デプロイ
    • Git を使用したデプロイ
    • Docker によるデプロイ
    • デプロイ統合
  • 継続的デリバリーとインテグレーション
    • 継続的統合
  • 言語サポート
    • Node.js
      • Working with Node.js
      • Node.js Behavior in Heroku
      • Troubleshooting Node.js Apps
    • Ruby
      • Rails のサポート
      • Bundler の使用
      • Working with Ruby
      • Ruby Behavior in Heroku
      • Troubleshooting Ruby Apps
    • Python
      • Working with Python
      • Python でのバックグランドジョブ
      • Python Behavior in Heroku
      • Django の使用
    • Java
      • Java Behavior in Heroku
      • Working with Java
      • Maven の使用
      • Spring Boot の使用
      • Troubleshooting Java Apps
    • PHP
      • PHP Behavior in Heroku
      • Working with PHP
    • Go
      • Go の依存関係管理
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • データベースとデータ管理
    • Heroku Postgres
      • Postgres の基礎
      • Postgres スターターガイド
      • Postgres のパフォーマンス
      • Postgres のデータ転送と保持
      • Postgres の可用性
      • Postgres の特別なトピック
      • Migrating to Heroku Postgres
    • Heroku Data For Redis
    • Apache Kafka on Heroku
    • その他のデータストア
  • AI
    • Working with AI
    • Heroku Inference
      • Inference API
      • Quick Start Guides
      • AI Models
      • Inference Essentials
    • Vector Database
    • 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年05月07日(火)

Table of Contents

  • Heroku エラーコード
  • サイズの大きい Cookie とヘッダーのサポート
  • 応答本体サイズのログ記録
  • dyno 接続の再利用
  • 応答本体のバッファリング
  • メンテナンスモードとカスタムエラーページ
  • Content-Length および Content-Type ヘッダー
  • クエリ文字列のログ記録
  • SNI サーバー名と host ヘッダーの一致
  • SSL セキュリティ
  • HTTP 1.0
  • ステータス行
  • サポートされている 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 (クライアント接続がアイドル状態です)
  • H99 - Platform error (プラットフォームエラー)

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

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

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

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

dyno 接続の再利用

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

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

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

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

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 セキュリティ

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

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

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

HTTP/2 は Private Space 用のパブリックベータ版です。Heroku Labs フラグ​を使用して HTTP/2 を有効にする

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 応答への逆変換は行いません。

ステータス行

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

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

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

カスタム DNS リゾルバー

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 Private Space 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