4

我对 spring-cloud 比较陌生,所以也许我还没有找到所有文档(Spring-Cloud 文档)。我找到了这个 stackoverflow entry,但不幸的是这对我没有帮助(或者我不明白答案)。

我正在使用 Spring-Boot 1.3-SNAPSHOT,此处包含 Spring-Cloud 1.0.3。

我想使用 Feign 和 Ribbon 来使用 REST Web 服务,但第一步不使用 Eureka、Hystrix 和 Zuul。

为此,我注释了 Client-Service 方法

@FeignClient("modelService")
public interface ProductModelService {...}

并放置一个类似的配置

modelService.ribbon.listOfServers: localhost:8444

进入 application.properties 以在没有 Eureka 的情况下使用 Ribbon。

这适用于 HTTP,但我无法使用 HTTPS - 我无法找到使用 HTTPS 的正确配置功能区。

有一个像

@FeignClient("https://modelService")
public interface ProductModelService {...}

没有帮助。

具有类似的配置

modelService.ribbon.isSecure=true

没有帮助。

如何配置功能区以便使用 HTTPS 安全的 Rest Web 服务?

4

2 回答 2

4

最近我遇到了同样的问题,我通过以下配置解决了这个问题。

https我在没有前缀的客户端类上保留注释,例如:

@FeignClient("modelService")
public interface ProductModelService {...}

这个配置最终对我没用:

modelService.ribbon.isSecure=true

对我有帮助的主要是指出明确的 HTTPs 443 端口,如下所示:

modelService.ribbon.listOfServers: https://somedomain.com:443
于 2019-01-16T14:26:28.097 回答
0

我一直这样做的方式是使用自定义属性来确定是在功能区客户端上使用 http 还是 https。我没有使用 feign,所以我的示例使用 RibbonClient 代替,但相同的方法应该适用于任何一个(?)。

例子:

package some.name.whatever;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.web.client.RestTemplate;

@RibbonClient(name = "random-service")
public class MyClient {

    @Autowired
    @Qualifier("loadBalancedTemplate")
    private RestTemplate rest;

    @Value("${modelService.https}")
    private boolean https;

    private String getServiceUrl() {

        return (https ? "https" : "http") + "://random-service";
    }

    public Integer getRandomNumber() {

        String fullUrl = ;

        return rest.getForEntity(getServiceUrl()+"/randomnumber", Integer.class).getBody();

    }
}
于 2017-01-04T18:17:16.197 回答