http到https网站上的重定向
我正在使用spring boot和haproxy。
我的spring启动配置负责ssl终止。 当用户打我的fqdn www.thebestsiteever.com时,用户无法找到网站错误。 但是,如果他们把https://www.thebestsiteever.com它工作得很好。 请注意,我的spring引导应用处理ssl并将请求从http重定向到https,因此haproxy应该是仅用于ssl和round robin负载均衡器的传递。
我研究了许多关于重定向的选项,但仍然存在问题。 一旦用户使用https连接(1次),所有后续请求都按预期工作,这意味着www.thebestsiteever.com即使在https未加前缀的情况下也能正常工作,所以https初始数据在客户端浏览器中缓存。 我需要用户第一次访问我的网站,只需访问www.thebestsiteever.com,而不必将https添加到fqdn。 这种行为在所有浏览器和移动设备上都很明显,请参阅下面的配置并提供一些选项供我修复。 我阅读了大部分文档,关于这个设置有一个与spring boot和haproxy有关的错误,但这是我们目前所拥有的,我们希望使它工作。
# haproxy version = 1.6.3
global
stats socket /var/run/haproxy.sock mode 600 level admin
stats timeout 2m
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
chroot /var/lib/haproxy
user haproxy
group haproxy
defaults
log global
mode tcp
option tcplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http-in
bind *:80
bind *:443
mode tcp
default_backend nodes
backend nodes
mode tcp
balance roundrobin
server web4 XX.XX.XX.168:9443 check
server web5 XX.XX.XX.168:9444 check
server web6 XX.XX.XX.168:9445 check
server web7 XX.XX.XX.168:9446 check
# spring boot startup setup
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat =
new TomcatEmbeddedServletContainerFactory() {
@Override
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(createHttpConnector());
return tomcat;
}
@Value("${server.default.port}")
private int serverPortHttp;
@Value("${server.port}")
private int serverPortHttps;
private Connector createHttpConnector() {
Connector connector =
new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("https");
connector.setSecure(false);
connector.setPort(serverPortHttp);
connector.setRedirectPort(serverPortHttps);
return connector;
}
#application-stage.yml
server:
port: 9443
ssl:
key-alias: tomcat
key-store: classpath:config/keystore.p12
key-store-password: xxxxxxx
链接地址: http://www.djcxy.com/p/62739.html
上一篇: http to https redirect on site
下一篇: Haproxy behind ELB