在使用阿里云的SLB时发现将https映身上http时,当使用response.sendRedirect进行转身时会跳成http请求。这是因为tomcat把请求来源当成了http.
使用以下方法来解决这个问题:
1. 在SLB的基本配置的高级配置中开启SLB监听协议。
2. 修改tomcat配置文件
2.1 设定TOMCAT的使用前端代理模式,解决TOMCAT中程序的redirect没有跳转到SSL的问题。
<Connector port="8080"
proxyName="这里是域名"
proxyPort="443"
scheme="https"
secure="true"
protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000" URIEncoding="UTF-8" useBodyEncodingForURI="true"
redirectPort="8443" />
上述的含义是,
SLB的域名是proxyName
SLB对外端口是proxyPort
SLB使用的协议是https
SLB是否开启SSL:secure
2.2 设定X-Forwarded过滤器
在server.xml中的<Engine>元素下增加如下内容:
<Valve className="org.apache.catalina.valves.RemoteIpValve"
internalProxies="47\.74\.\d{1,3}\.\d{1,3}"
remoteIpHeader="X-Forwarded-For"
protocolHeader="X-Forwarded-Proto"
protocolHeaderHttpsValue="https"/>
internalProxies的意思是:TOMCAT仅接受这个IP段过来的请求中的X-Forwarded系列的值覆写为Remote_Addr等。加了这个过滤器之后使用request.getRemoteAddr()就可以获取到正确的客户端IP了。需要注意的是,这个IP段需要根据你所用的SLB来写。
在TOMCAT里,internalProxies的默认值为(无法覆盖到SLB的IP段):
10\.\d{1,3}\.\d{1,3}\.\d{1,3}|192\.168\.\d{1,3}\.\d{1,3}|169\.254\.\d{1,3}\.\d{1,3}|127\.\d{1,3}\.\d{1,3}\.\d{1,3}|172\.1[6-9]{1}\.\d{1,3}\.\d{1,3}|172\.2[0-9]{1}\.\d{1,3}\.\d{1,3}|172\.3[0-1]{1}\.\d{1,3}\.\d{1,3}
特别注意:
这个<Value>一定要写在<Engine>元素下!
这个<Value>一定要写在<Engine>元素下!
这个<Value>一定要写在<Engine>元素下!
不要跟在<Host>里面
分享到:
相关推荐
本文将详细介绍如何在Tomcat服务器上将HTTP转换为更安全的HTTPS协议。 首先,为了实现HTTPS,我们需要一个数字证书,这个证书用于验证服务器的身份并加密通信。在Java开发环境中,我们可以使用JDK自带的`keytool`...
由于小程序需要使用https协议,在使用用腾讯云的服务器时,负载均衡服务器(SSL证书部署在此服务器上)与业务服务器上的apache之间使用的是http,apache与tomcat之间也使用的是http,这样导致两个问题,tomcat 在redirect的...
### Spring Boot 内置 Tomcat 配置 HTTPS 及 HTTP 自动转向 HTTPS #### 一、Spring Boot 内置 Tomcat 配置 HTTPS 访问 为了实现 Spring Boot 应用程序通过内置 Tomcat 服务器支持 HTTPS 访问,我们需要进行以下几...
本教程将详细讲解如何配置Tomcat以支持HTTPS协议,包括生成证书、配置端口以及强制所有HTTP请求转换为HTTPS。 首先,我们需要了解HTTPS的核心概念:SSL/TLS证书。这个证书由权威的证书颁发机构(CA)签发,包含公钥...
### Tomcat更换SSL证书方法(JKS与PFX转换) 在IT行业中,为了保障网络通信的安全性,使用SSL证书加密已经成为了一种标准做法。对于使用Tomcat作为应用服务器的企业或个人来说,有时候会遇到需要更换SSL证书的情况,...
主要介绍了腾讯云申请免费ssl证书配置tomcat使http变https,详细的介绍了每个步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
首先,Nginx通常作为前端服务器,负责处理网络请求,包括SSL终止,即接收来自客户端的HTTPS请求并将其转换为HTTP请求转发给后端的Tomcat服务器。这样做可以减轻Tomcat的负载,因为它不再需要处理加密和解密的工作。 ...
3. ** Coyote**:Coyote是Tomcat的HTTP/1.1协议处理器,它处理客户端的HTTP请求并返回响应。 4. **Juli**:Tomcat的内置日志系统,提供了更灵活的日志配置和控制。 5. **Shared Libraries**:允许在多个Web应用...
### Tomcat服务器配置HTTPS双向认证详解 #### 一、HTTPS原理及TLS/SSL特性 **1. HTTP、HTTPS、SSL、TLS的关系** - **HTTP**(HyperText Transfer Protocol): 是一种应用层协议,用于从Web服务器传输超文本到本地...
2. coyote:Coyote是Tomcat的HTTP/HTTPS连接器,负责接收和发送网络请求。 3. common:这个模块包含了Tomcat中可被所有其他模块共享的组件和服务,如Logging、Naming和JMX支持。 4. jasper:Jasper是Tomcat的JSP...
首先,我们来看【标题】"tomcat7.0基于https证书手册 1",这表明我们要讨论的是在Tomcat 7.0版本中设置HTTPS连接,需要用到证书来实现SSL/TLS加密。 【描述】中提到了几个关键步骤: 1. **生成私钥**:这是创建数字...
### DNS、Nginx与Tomcat实现HTTPS访问详解 #### 一、概述 在现代互联网应用中,HTTPS已经成为标配,不仅能够提供数据加密传输的安全保障,还能提升用户体验和搜索引擎优化等多方面的好处。本文将详细介绍如何通过...
HTTPS是HTTP协议的安全版本,通过使用SSL/TLS协议提供数据加密、服务器身份验证和消息完整性检查,确保了网络通信的安全性。 "增加https证书及配置"意味着这个Tomcat实例将被配置为支持HTTPS连接,这在处理敏感用户...
- 这样,当用户尝试访问HTTP端口80时,Tomcat会自动将请求重定向到HTTPS的443端口。 完成以上步骤后,重启Tomcat服务,你的网站就会使用免费的HTTPS证书进行加密通信了。浏览器地址栏将显示锁形图标,表明网站是...
3. **连接器(Connector)**:Tomcat提供了与不同网络协议(如HTTP/HTTPS)交互的组件,使得应用可以通过网络进行通信。 4. **部署工具**:Tomcat提供自动部署和热部署功能,开发者只需将应用的WAR文件放入特定目录...
【标题】:“(转)ab-tomcat压力测试工具” 【描述】:这篇博客文章并未提供具体的描述,但根据标题可以推断,它可能涉及一个名为"ab"的压力测试工具在Tomcat应用服务器上的使用。"ab"是Apache HTTP服务器项目的一...
Tomcat支持多种连接器,包括HTTP/1.1和AJP,可以与其他Web服务器如Apache HTTP Server进行集成。此外,Tomcat 9.2.3支持HTTP/2协议,提高了通信效率。 九、WebSocket支持 Tomcat 9内建了对WebSocket API的支持,...
Tomcat使用Coyote连接器处理HTTP/HTTPS连接。默认使用NIO(非阻塞I/O)模型,但也可配置为BIO(阻塞I/O)或APR(Apache Portable Runtime,利用操作系统级别的效率提升)。 10. **监控与管理** 通过访问...
此外,Tomcat还支持HTTP、HTTPS等多种协议,并能够作为独立的应用服务器运行,也可以与Apache等其他Web服务器配合使用。 ### 二、Tomcat架构分析 #### 2.1 架构概述 Tomcat采用了一种基于组件的模块化架构设计,...