为什么 consul discovery 在 localhost 上返回 https 但在服务器上只返回 http?

为什么 consul discovery 在 localhost 上返回 https 但在服务器上只返回 http?

我通过 hashicorp consul 测试了两种场景

1.我在 .net7 上通过 hashicorp consul 实现了服务发现,但是当我想从 consul 获取服务地址时,它只返回该服务的 http 而不是 https。我通过 docker 上的注册器注册了我的服务,也通过 .net dockerized 发现服务。

2.但是我在本地主机上测试了这个场景,我在本地主机上实现了两个 api,并在 docker 服务器上运行的 consul 上注册了其中一个,我发现当我通过 consul 从 api2 发现 api1 时,我请求了 api1 的 https 但是 consul 切换并将其更改为 http 并且它可以工作,我得到了结果。但是在我的服务器上同样的情况(场景 1)不起作用

我的实现:

服务.添加服务发现(选项=>选项.使用Consul());

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

// 我注入:IHttpClientFactory clientFactory

_httpClient = clientFactory.CreateClient("发现随机");

_httpClient.BaseAddress = new Uri($"https://{consul 上的服务名称}");

// 我针对场景 1 的应用程序设置由服务器上的 docker 完成注册,我刚刚通过 consul 发现了它:

“$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”,“发现”:{“注册”:true,“serviceName”:“TestConsul”,“hostName”:“localhost”,“port”:7141,“取消注册”:false}}

// 并设置服务发现 api2

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

相关内容