如果想让Spring Gateway同时支持https与http请求的话只需配置好两个协议对应的不同端口,并添加一个一个HttpServer服务即可。
1.在配置文件中添加配置:
server:
port: 443
ssl:
enabled: true
key-store-password: XXXXXX
key-store: classpath:XXXX.XXX.XXX.pfx
key-store-type: PKCS12
http:
port: 88
2.添加一个HttpServer服务类,并添加配置注解:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.netty.NettyReactiveWebServerFactory;
import org.springframework.boot.web.server.WebServer;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.server.reactive.HttpHandler;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;
@Configuration
public class HttpServer {
@Resource
private HttpHandler httpHandler;
private WebServer webServer;
@Value("${server.http.port}")
private Integer httpPort;
@PostConstruct
public void start() {
NettyReactiveWebServerFactory factory = new NettyReactiveWebServerFactory(httpPort);
WebServer webServer = factory.getWebServer(httpHandler);
webServer.start();
}
@PreDestroy
public void stop() {
webServer.stop();
}
}