如何轻松配置嵌入式tomcat服务器,将所有http流量重定向到https?我在弹性负载平衡器后面的ec2实例上运行Spring Boot。我已经配置了ELB来为我处理ssl(这太棒了),它将X-FORWARDED-PROTO头设置为“https”。我想检测什么时候没有设置,并重定向用户,迫使他们使用https,如果他们还没有设置的话。
到目前为止,我已经尝试将以下内容添加到我的application.properties文件中,但没有成功:
server.tomcat.protocol-header=x-forwarded-proto
security.require-ssl=true
配置属性的安全性。当基本身份验证被禁用时(至少在旧版本的Spring Boot上),require ssl不起作用。因此,您可能需要使用类似以下代码手动保护所有请求:
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Inject private SecurityProperties securityProperties;
@Override
protected void configure(HttpSecurity http) throws Exception {
if (securityProperties.isRequireSsl()) http.requiresChannel().anyRequest().requiresSecure();
}
}
你可以在这里查看我的完整答案:Spring Boot将HTTP重定向到HTTPS
我的回答有点晚,但我最近才遇到这个问题,想发布一个对我有用的解决方案。
起初,我认为设置tomcat使用X-Forwarded头文件就足够了,但是Tomcat中通常应该处理这种情况的远程IPValve对我不起作用。
我的解决方案是添加一个EmBeddedServletContainerCustomizer和添加一个ConnectorCustomizer:(请注意,我在这里使用Tomcat 8)
@Component
public class TomcatContainerCustomizer implements EmbeddedServletContainerCustomizer {
private static final Logger LOGGER = LoggerFactory.getLogger(TomcatContainerCustomizer.class);
@Override
public void customize(final ConfigurableEmbeddedServletContainer container) {
if (container instanceof TomcatEmbeddedServletContainerFactory) {
final TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container;
tomcat.addConnectorCustomizers(connector -> {
connector.setScheme("https");
connector.setProxyPort(443);
});
LOGGER.info("Enabled secure scheme (https).");
} else {
LOGGER.warn("Could not change protocol scheme because Tomcat is not used as servlet container.");
}
}
}
重要的是,不仅要将方案设置为https,还要设置ProxyPort,如果没有ProxyPort,Spring Boot的所有内部重定向都会路由到端口80。
问题内容: 如何将* .appspot.com域重定向到自定义域。我想要的是这样重定向域: 注意:我正在使用go and gorilla mux。 问题答案: 您可以按照此处所述的方法进行组合,以重用代码。 在您的情况下,组合器将如下所示(根据您的口味和要求进行调整): 您可以使用以下方法包装处理程序:
下午好,我正在使用spring boot,并且已经实现了http安全模式(https ),但是我需要知道如何将http请求重定向到https,以及是否有必要指定一个特定的安全端口,比如443,或者我可以使用任何端口。目前我使用端口8080 8443 我的班级 主要类别 请求类 响应类别 控制器类 应用属性 pom xml 我的项目结构 科胜 连接HTTP 更新 使用以下适用于我的spring版本的
问题内容: 我一直在尝试通过正在处理的node.js项目来设置HTTPS。对于该示例,我基本上遵循了node.js文档: 现在,当我做 我懂了 如预期的那样。但是如果我这样做 我懂了 回想起来,这样做似乎很明显,但是与此同时,最终访问我项目的人不会键入 https :// yadayada,我希望从点击起就将所有流量都设为https网站。 我如何获得节点(以及Express,因为我正在使用的框架)
我有和这个问题一样的问题,但不是在EC2环境中,只是简单地从命令行启动我的spring boot应用程序。我按照下面这个例子中的代码,成功地让我的应用程序在HTTPS上运行: 现在我可以在。 我希望会重定向到https。现在Chrome只是显示:“未收到数据”,这对用户不太友好。
我需要执行以下操作:我当前的地址如下所示:https://www.domain.com 我想用htaccess:www.domain重定向。通信https://www.domain.com和http://domain.com到https://www.domain.com 我在这里尝试了一些建议,但最终还是没完没了的循环。我试过: 任何帮助都将不胜感激。 更新:我想我已经做到了以下几点: 这样做对吗
问题内容: 从上一页收集到数据后,我想向客户显示另一页。但是我在服务器端重定向新URL时遇到麻烦。这是我的逻辑: 将带有POST操作的用户输入提交给服务器; 服务器运行函数saveChoice()将用户输入保存到数据库中; 保存用户输入后,服务器将新的URL发送给客户端。 当客户端获取新URL时,服务器读取数据库并取出保存的数据 我坚持执行第3步(这里是流程示例): 这是模板: 我可以知道如何重定