アップストリームオプション
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ヘッダーが含まれている場合、rpxyはforwarded_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",
]