スペースを含むパラメーターを使用して GET API を呼び出そうとしています:
https://abc.xyz/search/web/buildings/search/v2/city/new%20york
エンドポイントは、リクエストを適切なマシンにリダイレクトするロード バランサー (nginx) にヒットします。
応答で、505 HTTP バージョンがサポートされていませんというエラーが表示されます。しかし、HTTP (内部 IP を使用) を使用してロード バランサーに同じ要求を行うと、正常に応答が返されます。
両方のケースの関連するアクセス ログは次のとおりです。
http経由で呼び出されたときのnginxのアクセスログ
"GET /search/web/buildings/search/v2/city/r%20c HTTP/1.1" S=200 487 T=0.005 R=- 10.140.15.199
http経由で呼び出されたときのマシンのアクセスログ
"GET /search/search/web/buildings/search/v2/city/r%20c HTTP/1.0" 200 36
上記のリクエストは正常に機能します。d%20a
しかし、https を介してリクエストすると、マシンのリクエストは異なります (代わりにあるはずですd a
) 。
https経由で呼び出されたときのnginxのアクセスログ
"GET /search/web/buildings/search/v2/city/d%20a HTTP/1.1" S=505 168 T=0.001 R=- 35.200.191.89
https経由で呼び出されたときのマシンのアクセスログ
"GET /search/search/web/buildings/search/v2/city/d a HTTP/1.0" 505 -
関連するnginx構成は次のとおりです。
upstream searchtomcat {
least_conn;
server search-1:8080;
server search-2:8080;
}
server {
#listen 443 ssl http2;
listen 443;
client_max_body_size 100M;
...
location ~* ^/search/(.*)$ {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://searchtomcat/search/search/$1;
proxy_read_timeout 900;
}
}
には何もありませんerror.log
。
マシンが別の方法でリクエストを取得している理由として考えられるのは何ですか?