我正在使用Cloudflare管理域的DNS。
Netlify托管其营销页面。
主应用程序由Heroku托管。
cloudflare +裸域(my-example.com)是否有可能由Netlify提供服务的某些路径以及由Heroku提供的其他路径?
还是我被迫将托管服务之一放在子域上?
答案 0 :(得分:6)
免责声明:我为Netlify工作。
您绝对可以在不运行您自己的服务器或支付任何额外费用的情况下执行此操作。
由于Netlify已经具有CDN,因此将cloudflare's CDN (activated with the 'orange cloud' in their settings)放在Netlify的前面是次优的。除了效率低下外,这样做还会破坏Netlify的atomic deploys and rollbacks,并且还会减慢我们观察到的页面服务。它可能有效,但不建议这样做。但是,CloudFlare的DNS相当出色,可以在没有CDN的情况下使用(关闭“橙色云”)。他们的DNS与Netlify的CDN上托管的内容配合得很好。
这里是通过Netlify进行设置的方法。
Netlify的代理(技术上是反向代理)可以连接到您想要的任何后端,并且不向访问者显示URL-它看起来像他们(浏览器中的URL栏,HTTPS连接),就好像他们已连接到我的-example.com,但是内容是从后端返回的(包括HTTP状态代码。如果您的Heroku应用发送的Cache-Control:
HTTP标头指令指示此响应,则将其缓存在Netlify的CDN上。请注意,CloudFlare 将更改您的Cache-Control标头,以防您将其设置在它们要代理的内容上!Netlify不会。)
这是一个常见的设置:
/main/* https://yourapp.herokuapp.com/main/:splat 200!
/app/* https://yourapp.herokuapp.com/main/:splat 200!
请注意,如果您将/ main或/ app下的ANY资产部署到Netlify,则由于这些规则的结尾!
,它们将被忽略。有关其工作原理和替代方法的更多详细信息,请参见https://www.netlify.com/docs/redirects/#note-on-shadowing(TL; DR:在Netlify上部署/main/logo.png之类的东西,但Heroku应该不提供服务或为/ main / *部署所有所需内容在Heroku上。)
请注意,我建议在Netlify和Heroku(/main/*
)上使用相同的路径,而不是代理到/somethingelse/*
,因为在路径匹配时调试资产加载更加容易。但这不是必需的。
答案 1 :(得分:0)
如评论中所述,它可以使用cloudflare企业服务。
但是您可以通过简单的nginx反向代理设置来做到这一点。
已将DNS解析为nginx反向代理,并根据该路径适当地调用上游。
config