开发者社区> 问答> 正文

SLB环境下apache的部分https跳转规则

请教大家一个问题,我们用的是阿里云的SLB+ECS,其中域名解析到SLB上,SSL证书也安装在SLB上,ECS服务器上安装了apache用于重写,tomcat提供后台服务。在SLB上开放了两个前端端口80和443,分别对应到后端apache的81和tomcat的80,这种情况对全站跳转https有效,但现在想类似/A/B.html?id=xxx的请求还是继续走80请求转给tomcat处理,而其他的请求都强制自动转https,怎么实现呢?

我尝试了在apache里配置以下规则
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} !^/A/B.* [NC]
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,NE,L]

RewriteRule ^.*$ http://%{SERVER_NAME}%{REQUEST_URI} [NE,L]

结果对于/A/B.html的请求因为不满足规则1而使用规则2,但是规则2又将请求转回了SLB,SLB再转到apache,导致产生重定向循环
而如果把规则2去掉,又因为没有匹配到相应的重写路由出现404错误,该怎么写才能让apache直接转到后台tomcat处理呢?

提了工单给阿里云,结果人家居然不管,只好在这求救,哪位专家给点思路,不胜感激!!

展开
收起
jinghuiliu 2016-02-25 20:54:21 8164 0
2 条回答
写回答
取消 提交回答
  • 回 1楼51干警网的帖子
    是的,提工单时选的SLB分支。网上大多数问题是http强跳https,没有涉及部分强跳,即使有部分跳https也只是apache,没有SLB+apache的环境,应该不存在重定向循环问题。
    你说的http和https分别走不同端口是指后端吗?这个我也考虑过,只是感觉那样浏览器上会显示成带端口的,用户会很奇怪,另外因为我们要沿用http的是一些APP接口,用这个可能会存在问题。
    2016-02-26 07:00:05
    赞同 展开评论 打赏
  • 阿里云论坛版主,QQ 1978638808
    你提交工单的时候选的是slb对于分类吗?
    表示,我是菜鸟一枚。我说说我的思路。能不能把https走一个端口,http用另外一个。
    表示,确实是小白,如果思路很小白的话,请轻喷。

    2016-02-26 01:01:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
双十一技术揭秘 负载均衡性能优化演进之路 立即下载
负载均衡是如何支撑几亿手机微博用户访问的高性能负载均衡研发 立即下载
大规模场景下KubernetesService 负载均衡性能 立即下载

相关镜像