サーバーへのエントリポイントにnginxがあります。 SSL接続を処理し、/api/v1/
のHTTP
リクエストをHAproxyに送信してバランシングを行います。これは私のnginx設定です:
location /api/v1/ {
proxy_pass http://127.0.0.1:8585/;
proxy_set_header Host $Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
およびHAproxy構成:
frontend haproxy_entry
bind *:8585
mode http
log global
acl is_api url_beg /api/v1/
use_backend api if is_api
私が抱えている問題は、/api/v1/
パスを2回渡す必要があることです。 https://servername.com/api/v1/
をリクエストすると、haproxyはこれを適切に処理しませんが、:https://servername.com/api/v1/api/v1/
の場合は問題ありません。どうすればこれを修正できますか?
proxy_pass
ステートメントには、上流に渡す前にURLを変更するために使用されるオプションのURIが含まれています。
あなたの質問では、proxy_pass
ステートメントに/
のURIが含まれています。これは、location
値と組み合わせて、元のURLの/api/v1/
部分を置き換えます。 /
。
例:https://example.com/api/v1/foo
はhttp://127.0.0.1:8585/foo
に変換されます。
これは必要ないようです。この機能をオフにするには、URI部分を削除するだけです。
例えば:
location /api/v1/ {
proxy_pass http://127.0.0.1:8585;
...
}
詳細は このドキュメント を参照してください。