springcloud的gateway如何实现http/https访问

springcloud的gateway如何实现http/https访问

问题描述:

图片说明
环境:maven 3.3.9,
jdk1.8,
springboot2.1.3,
springcloud Greenwich。
模块:注册中心,
配置中心,
gateway网关,
用户系统
等。。。。。
需求:使用http/https访问gateway网关,如http://localhost:8080/USER/getuserinfo、https://localhost:8443/USER/getuserinfo
问题描述:我在网上找了一些关于springboot/springcloud配置http/https访问的帖子,基本都类似,例如:springboot2.0.x配置方法,参考https://www.cnblogs.com/lianggp/p/8136540.html 凉瓜皮

@Value("${http.port}")
    private Integer port;
@Bean
  public ServletWebServerFactory servletContainer() {
    TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
    tomcat.addAdditionalTomcatConnectors(createStandardConnector()); // 添加http
    return tomcat;
  }
    // 配置http
    private Connector createStandardConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");![图片说明](https://img-ask.****.net/upload/201910/12/1570856177_111958.png)

        connector.setPort(port);
        return connector;
    }

主要都是通过配置tomcat,在创建Connector。问题就出在这个connector上,connector是springboot-web依赖下的,但是在gateway中spring-boot-starter-webflux与spring-boot-web相互冲突,这是因为webfulx默认使用netty,在gateway网关启动的时候就可以看到

: DiscoveryClient_GATEWAY/GA-PC:gateway:8080 - registration status: 204
: Netty started on port(s): 8080
: Updating port to 8080
: Started GatewayApplication in 4.411 seconds (JVM running for 4.82)

所以,这个办法好像行不通,我看帖子里边最终用tomcat启的,不知道他们怎么弄得。
之后,我去官网看了看,各种路由器、过滤器,云里雾里看不太懂。不过发现这个RouteToRequestUrl Filter(将从request里获取的原始url转换成Gateway进行请求转发时所使用的url)过滤器好像可以起点作用,一通搞不顶用。放弃。
我真的不行了,求教各位大佬!!!!

思路错了吧,https跟网关没多大关系,网关本来就是http请求转发的,将网关注册到注册中心,网关配置路由到USER服务

routes:
  - id: name_route
    uri: lb://USER
    filters:
      - StripPrefix=1
    predicates:
      - Path=/USER/**

我感觉我可能没太明白你的意思?

不太清楚你的gateway是使用的那个网关。如果是spring cloud gateway的话,官网描述对ssl支持是很友好的,只需要配置:

server:
  ssl:
    enabled: true
    key-alias: scg
    key-store-password: scg1234
    key-store: classpath:scg-keystore.p12
    key-store-type: PKCS12

spring boot自己就会解析,应该不需要你自己定义的bean处理了。

但是问题是,为什么springCloud Gateway直接暴露出去呢?不是应该上面加一层域名解析进行负载均衡么?