如何将http调用重定向到spring-cloud-gateway中的https。如This Link所述,我在网关项目中配置了https。
现在HTTPS运行良好,但除此之外,我还需要将所有http调用重定向到https。我试过This
但是这并不适用于我,因为我没有使用默认的http端口8080,而且我的应用程序也运行在spring安全性上。
下面的代码演示了如何将http重定向到https,但是对于Netty服务器,我需要相同的配置,因为spring-cloud-gateway只支持netty。
@Configuration
public class RedirectToHttpsConfig {
@Value("${server.port}")
private Integer httpsPort;
@Value("${server.http.port}")
private Integer httpPort;
/* ################ THIS WILL WORK FINE ################
################ IF YOU HAVE TOMCAT ################
################ AS EMBEDDED SERVER ################
*/
@Bean
public TomcatServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
protected void postProcessContext(Context context) {
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("*//*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
tomcat.addAdditionalTomcatConnectors(initiateHttpConnector());
return tomcat;
}
private Connector initiateHttpConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(httpPort);
connector.setSecure(false);
connector.setRedirectPort(httpsPort);
return connector;
}
/* ################ -------- ################ */
/* ################ HOW TO DO THE ABOVE Configuration
FOR NETTY SERVER ################ */
@Bean
public NettyReactiveWebServerFactory nettyReactiveWebServerFactory(){
NettyReactiveWebServerFactory netty = nettyReactiveWebServerFactory(){
NettyServerCustomizer nettyServerCustomizer = new NettyServerCustomizer() {
@Override
public void customize(HttpServerOptions.Builder builder) {
**// NOT ABLE TO FIGURE OUT HERE**
}
}
};
}
}发布于 2018-07-11 12:54:38
最好的方法是将apache放在网关前面,并对其进行重写。以这种方式运行它有许多优点。它还使您拥有一个最终用户可以访问的静态url,如果您有问题或更改apache背后的底层技术,您只需将其指向新的服务/url或其他任何东西。在Apache中这样做还允许您运行类似mod-security之类的程序。最终,它可能只是一个通过(为您的http->https问题重写规则),但这比在您的网关中使用代码更好的架构。
https://stackoverflow.com/questions/51150176
复制相似问题