コンテンツにスキップ
アップストリームオプション

アップストリームオプション

rpxyは、アップストリームのバックエンドアプリケーションへのリクエストメッセージの転送方法を制御するためのいくつかのオプションを提供しています。これらはリバースプロキシエントリごとにupstream_options配列で指定します。

設定

[[apps.app1.reverse_proxy]]
upstream = [
  { location = 'backend.local:8080' },
]
upstream_options = [
  "set_upstream_host",
  "forwarded_header",
]

利用可能なオプション

keep_original_host

クライアントリクエストの元のHostヘッダーを保持します。これがデフォルトの動作であり、set_upstream_hostと両方指定された場合はこちらが優先されます。

set_upstream_host

Hostヘッダーをアップストリームのホスト名(例: backend.local:8080)で上書きします。keep_original_hostも指定されている場合は無視されます。

upgrade_insecure_requests

転送リクエストにUpgrade-Insecure-Requests: 1ヘッダーが存在しない場合に追加します。

force_http11_upstream

アップストリーム接続にHTTP/1.1を強制します。force_http2_upstreamと排他的です。

force_http2_upstream

アップストリーム接続にHTTP/2を強制します。force_http11_upstreamと排他的です。

forwarded_header

標準のForwardedヘッダー (RFC 7239)を生成して転送リクエストに追加します。

デフォルトでは、rpxyは設定なしで以下の転送ヘッダーをすべてのリクエストに自動的に追加します:

ヘッダー説明
X-Forwarded-ForクライアントのIPアドレスが追加されます。既に存在する場合、新しいIPはカンマ区切りで追加されます。
X-Forwarded-Proto受信接続に基づいてhttpsまたはhttpに設定されます。既に存在しない場合のみ追加されます。
X-Forwarded-Portリッスンポートに設定されます。既に存在しない場合のみ追加されます。
X-Forwarded-SSL受信接続に基づいてonまたはoffに設定されます。
X-Real-IPクライアントのIPアドレスに設定されます。
X-Original-URI元のリクエストURIに設定されます。

forwarded_headerオプションは、これらのデフォルトヘッダーに加えてRFC 7239のForwardedヘッダーを追加します:

Forwarded: for=192.0.2.1;proto=https;host=app1.example.com
受信リクエストに既にForwardedヘッダーが含まれている場合、rpxyforwarded_headerオプションがなくても整合性のために更新します。このオプションは、Forwardedヘッダーがまだ存在しない場合に新しく生成するかどうかを制御します。

[[apps.app1.reverse_proxy]]
upstream = [
  { location = 'www.example.com', tls = true },
  { location = 'www.example.org', tls = true },
]
load_balance = "round_robin"
upstream_options = [
  "set_upstream_host",
  "forwarded_header",
  "force_http11_upstream",
]

[[apps.app1.reverse_proxy]]
path = '/api'
replace_path = '/'
upstream = [
  { location = 'api.internal:3000' },
]
upstream_options = [
  "upgrade_insecure_requests",
]