spring cloud 项目http转https

先下载ssl证书,我的下载的是jks,阿里云腾讯云都可以,看你服务器绑定的哪的,下载过之后放到和配置文件统计的文件中

cloud项目直接再getway网关配置,下面是配置文件,

server:
  port: 443
  http:
    port: 80
  tomcat:
    # tomcat的URI编码
    uri-encoding: UTF-8
    # tomcat最大线程数,默认为200
    max-threads: 800
    # Tomcat启动初始化的线程数,默认值25
    min-spare-threads: 30
    #开启https认证配置
  ssl:
    key-store: classpath:****.jks
    key-password: *****
    key-store-type: JKS
    client-auth: none

然后http自动转向https的配置文件

@Configuration
public class HttpToHttpsRedirectConfig  {
    @Value("${server.http.port}")
    private int httpPort;
    @Value("${server.port}")
    private int serverPort;


    @PostConstruct
    public void startRedirectServer() {
        NettyReactiveWebServerFactory httpNettyReactiveWebServerFactory = new NettyReactiveWebServerFactory(httpPort);
        httpNettyReactiveWebServerFactory.getWebServer((request, response) -> {
            URI uri = request.getURI();
            URI httpsUri;
            try {
                httpsUri = new URI("https", uri.getUserInfo(), uri.getHost(), serverPort, uri.getPath(), uri.getQuery(), uri.getFragment());
            } catch (URISyntaxException e) {
                return Mono.error(e);
            }
            response.setStatusCode(HttpStatus.MOVED_PERMANENTLY);
            response.getHeaders().setLocation(httpsUri);
            return response.setComplete();
        }).start();
    }
}

配置完成之后,访问http路径直接会自动转为https ,直接访问https也可以

经验分享 程序员 微信小程序 职场和发展