なぜconsul discoveryはlocalhost上ではhttpsを返すのに、サーバー上ではhttpだけを返すのでしょうか?

なぜconsul discoveryはlocalhost上ではhttpsを返すのに、サーバー上ではhttpだけを返すのでしょうか?

hashicorp consulで2つのシナリオをテストしました

1. .net7 で hashicorp consul によるサービス検出を実装しましたが、consul からサービス アドレスを取得しようとすると、そのサービスの https ではなく http が返されます。私は docker の registrator でサービスを登録し、.net dockerized でもサービスを検出します。

2.しかし、私は自分のローカルホストでこのシナリオをテストしました。ローカルホストに2つのAPIを実装し、そのうちの1つをDockerサーバーで実行されているconsulに登録しました。consulを介してapi2からapi1を検出すると、api1のhttpsを要求しましたが、consulがそれをhttpに切り替えて動作し、その結果が得られました。しかし、私のサーバー(シナリオ1)では同じ状況は機能しません。

私の実装:

services.AddServiceDiscovery(オプション => options.UseConsul());

//HttpClinetFactory services.AddHttpClient("DiscoveryRandom").ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler { ServerCertificateCustomValidationCallback = (sender, cert, chain,sslPolicyErrors) => true, }).AddHttpMessageHandler().AddServiceDiscovery();

// 挿入: IHttpClientFactory clientFactory

_httpClient = clientFactory.CreateClient("DiscoveryRandom");

_httpClient.BaseAddress = new Uri($"https://{consul の ServiceName}");

// シナリオ 1 の私のアプリ設定は、サーバー上の docker によって登録され、consul を通じて doscover されました:

"$schema": "https://steeltoe.io/schema/latest/schema.json", "Consul": { "Host": "10.200.8.178", "Discovery": { "Register": false } }

// シナリオ 2 のアプリ設定は、ローカルホストで自分で登録します。

// api1 を consul に登録するための設定

"$schema": "https://steeltoe.io/schema/latest/schema.json", "Consul": { "Host": "10.200.8.178", "Discovery": { "Register": true, "serviceName": "TestConsul", "hostName": "localhost", "port": 7141, "deregister": false } }

// サービス検出 API2 の設定

"$schema": "https://steeltoe.io/schema/latest/schema.json", "Consul": { "Host": "10.200.8.178", "Discovery": { "Register": false } }

関連情報