Cloudflare上的Heroku自定义域:重定向太多

时间:2015-07-30 10:50:17

标签: ruby-on-rails heroku dns cloudflare

目标

enter image description here

  • 之前已在其他Heroku应用上成功完成此操作,请使用以下步骤
  • 我缺少什么?

我做了什么

  • 通过Godaddy购买essbap.org
  • 导入DNS到Cloudflare。
  • 在Godaddy插入Cloudflare名称服务器。
  • 从Godaddy删除了区域记录。

的CloudFlare:

  • 插入CNAME记录rapid以指向ebcc-rrn.herokuapp.com
  • 在Heroku上:将自定义域rapid.essbap.org添加到ebcc-rrn.herokuapp.com

Heroku:

heroku domains:add rapid.essbap.org

=== ebcc-rrn Heroku Domain
ebcc-rrn.herokuapp.com

=== ebcc-rrn Custom Domains
Domain Name       DNS Target
----------------  ----------------------
rapid.essbap.org  ebcc-rrn.herokuapp.com 

$ host rapid.essbap.org 
rapid.essbap.org has address 104.27.162.137 
rapid.essbap.org has address 104.27.163.137

Cloudflare设置

enter image description here

刚添加:

正在运行卷曲

当我对另一个我认识有效的Heroku自定义域应用运行curl时,它看起来像:

$ curl -I some.custom_app.com
HTTP/1.1 301 Moved Permanently
Location: https://some.custom_app.com/

# since I'm using force_ssl on Rails, we expect to be directed to https://

$ curl -I https://some.custom_app.com/
HTTP/1.1 200 OK

ebcc-rrn.herokuapp.com的类似行为(Herokuapp我们希望rapid.essbap.org成为别名)。 A 301然后200。

但是当我针对curl运行rapid.essbap.org时,我得到:

$ curl -I rapid.essbap.org
HTTP/1.1 301 Moved Permanently
Location: https://rapid.essbap.org/

# since I'm using force_ssl on Rails, we expect to be directed to https://

$ curl -I https://rapid.essbap.org
HTTP/1.1 301 Moved Permanently
Location: https://rapid.essbap.org/

在第二种情况下,我们获得301而不是200。我不确定为什么要生成301。不会在dev或ebcc-rrn.herokuapp.com中发生。

我错过了什么?

5 个答案:

答案 0 :(得分:4)

我的案例设置加密 - > SSL FlexibleFull就可以了。

答案 1 :(得分:3)

不幸的是,没有确凿的解决方案(但非常感谢Heroku的技术帮助)。

通过回滚并再次尝试来管理解决问题:

  • 将DNS转发回Godaddy
  • 从Cloudflare擦除域名
  • 确保Godaddy的功能
  • 在Cloudflare上创建域
  • 再次转移到Cloudflare

现在所有工作都按计划进行。

答案 2 :(得分:2)

我最近在网站上遇到了同样的问题,也使用了Heroku和Cloudflare以及SSL。

在我们的案例中,解决方案是我们必须在Crypto>下的Cloudflare中设置SSL选项。 SSL到Flexible。我们在Full上有了它,这导致该网站尝试使用CloudFlare的SSL证书。它不适用于设置为Off的SSL选项。

答案 3 :(得分:0)

如果我将该网址卷曲到https://rapid.essbap.org/上,看起来您已将其重定向回https://rapid.essbap.org/

curl -v https://rapid.essbap.org *重建网址:https://rapid.essbap.org/ *在DNS缓存中找不到主机名 *尝试2400:cb00:2048:1 :: 681b:a389 ...... *连接到rapid.essbap.org(2400:cb00:2048:1 :: 681b:a389)端口443(#0) *使用TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256进行TLS 1.2连接 *服务器证书:sni95196.cloudflaressl.com *服务器证书:COMODO ECC域验证安全服务器CA 2 *服务器证书:COMODO ECC证书颁发机构 *服务器证书:AddTrust外部CA根

  

GET / HTTP / 1.1   User-Agent:curl / 7.37.1   主持人:rapid.essbap.org   接受: /

     

< HTTP / 1.1 301永久移动   *服务器cloudflare-nginx未列入黑名单   <服务器:cloudflare-nginx   <日期:星期四,2015年7月30日23:37:57 GMT   <内容类型:text / html   <转移编码:分块   <连接:保持活力   < Set-Cookie:__ cffidid = ddc8d6151d53a0e3d3eab0789f0b811851438299465;到期=周五,29-Jul-16 23:37:45 GMT;路径= /;域= .essbap.org;仅Http   <地点:https://rapid.essbap.org/   <通过:1.1 vegur   < CF-RAY:20e4e4ab2489281c-SJC

http://rapid.essbap.org/ *在DNS缓存中找不到主机名 *尝试2400:cb00:2048:1 :: 681b:a389 ...... *连接到rapid.essbap.org(:: 1)端口80(#0)

  

GET / HTTP / 1.1   User-Agent:curl / 7.37.1   主持人:rapid.essbap.org   接受: /

     

< HTTP / 1.1 301永久移动   <日期:星期四,2015年7月30日23:40:57 GMT   <内容类型:text / html   <转移编码:分块   <连接:保持活力   < Set-Cookie:__ cffidid = d5b6d3a1c46df56fcd623454bba7c9d121438299657;到期=周五,29-Jul-16 23:40:57 GMT;路径= /;域= .essbap.org;仅Http   <地点:https://rapid.essbap.org/   <通过:1.1 vegur   *服务器cloudflare-nginx未列入黑名单   <服务器:cloudflare-nginx   < CF-RAY:20e4e95a0abf281c-SJC

答案 4 :(得分:0)

使用加密->“始终使用HTTPS”:直接在CloudFlare上启用该技巧。

SSL不是由rails强制执行,而是由此选项强制执行。

不确定这种方法是否有缺点。

enter image description here