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

图片说明
环境: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.csdn.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)过滤器好像可以起点作用,一通搞不顶用。放弃。
我真的不行了,求教各位大佬!!!!

3个回答

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

routes:
  - id: name_route
    uri: lb://USER
    filters:
      - StripPrefix=1
    predicates:
      - Path=/USER/**
guangcaiwudong
Kevin.Y.K 回复享阝: 在网络请求和网关中间加一层nginx或者SLB之类的,SSL证书在这一层配置,转发到网关,也就是网关不要配置https,不然每个tomcat都要配置证书,玩不转
大约一个月之前 回复
pojo_guo
享阝 你好,可能是我没描述清楚,我的意思是在gateway中配置https/http,最终效果是http://localhost8080/USER/getuserinfo、https://localhost8443/USER/getuserinfo两种请求方式都能获取到信息
大约一个月之前 回复

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

不太清楚你的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处理了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!