环境:采用的是阿里云的 SLB 配置两台 ECS 虚拟主机。
最初在两台虚拟主机上直接对 Tomcat 配置 HTTPS 请求,单独访问是没有问题,后来将 ECS 挂到 SLB 下,给 SLB 配置了 HTTPS 监听,结果访问会经常出现问题:网页无法正常运作,将你重定向的次数过多。
通过咨询客服,是因为我将 SLB 和 ECS 都配置了 HTTPS,导致此现象。
SLB 上配置了 HTTPS,后端服务器上就不需要配置了,并且 SLB 到 ECS 是通过 HTTP 转发的,后端服务器上再设置了 HTTP 到 HTTPS 的强制跳转会出现:HTTPS => HTTP => HTTPS => HTTP……,这样跳转就循环了。
通过把 ECS 的 HTTPS 去掉后,结果又出现了项目资源文件加载不到,导致样式不全页面乱掉,请求出问题。
原因是程序中针对域名的调用都是 HTTP,导致此现象。
解决方案:在调用页面 head 里增加 ,将 HTTP 调用改为了 HTTPS。
注意:请求路径端口号是否需要。
注意事项
- 添加 HTTPS 监听,一共有 2 个端口,第一个是监听端口,第二个是服务器端口。
- HTTPS 监听 “健康” 关闭,因为有 BUG。
- HTTPS 配置,Nginx 服务器和阿里云 SLB (推荐)只需要配置一个,都配置会出问题。
- 443 端口在服务器安全组没配置,但 SLB 那里开启了也是可以的。
- 网上有说,关闭 “ssl on”,此乃野鸡操作,治标不治本(不推荐)。
阿里云 SLB 配置 HTTPS
阿里云Nginx
server { listen80; server_name127.0.0.1; root/usr/web; location/abc { indexindex.html; try_files$uri$uri//abc/index.html; } location/Service { proxy_passhttp://xxx.xxx.xxx.xxx:xxxx/Service; } }
附
Nginx/Tengine服务器安装SSL证书:https://help.aliyun.com/knowledge_detail/95491.html