Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Heroku 将同一裸域反向代理到不同主机_Heroku_Dns_Reverse Proxy_Cloudflare_Netlify - Fatal编程技术网

Heroku 将同一裸域反向代理到不同主机

Heroku 将同一裸域反向代理到不同主机,heroku,dns,reverse-proxy,cloudflare,netlify,Heroku,Dns,Reverse Proxy,Cloudflare,Netlify,我正在使用Cloudflare管理我域的DNS 的营销页面由Netlify托管 主应用程序由Heroku托管 使用cloudflare+裸域(my example.com)是否可能有Netlify提供的一些路径和Heroku提供的其他路径 还是我被迫将其中一个托管服务放在子域上?如评论中所述,它可能使用cloudflare企业服务 但您可以通过简单的nginx反向代理设置来实现 将DNS解析为nginx反向代理,并根据路径适当调用上游 eg. example.com, and then dire

我正在使用Cloudflare管理我域的DNS

的营销页面由Netlify托管

主应用程序由Heroku托管

使用cloudflare+裸域(my example.com)是否可能有Netlify提供的一些路径和Heroku提供的其他路径


还是我被迫将其中一个托管服务放在子域上?

如评论中所述,它可能使用cloudflare企业服务

但您可以通过简单的nginx反向代理设置来实现

将DNS解析为nginx反向代理,并根据路径适当调用上游

eg. example.com, and then direct queries for /path1 to 100.100.100.100 and for /path2 to 200.200.200.200

如评论中所述,使用cloudflare企业服务是可能的

但您可以通过简单的nginx反向代理设置来实现

将DNS解析为nginx反向代理,并根据路径适当调用上游

eg. example.com, and then direct queries for /path1 to 100.100.100.100 and for /path2 to 200.200.200.200

免责声明:我为Netlify工作

您完全可以做到这一点,而无需运行自己的服务器或支付任何额外费用

因为Netlify已经有了CDN,所以放在Netlify前面是次优的。除了效率低下之外,这样做还会破坏Netlify的功能,也会降低我们观察到的页面服务速度。它可能有效,但不推荐使用。但是,CloudFlare的DNS性能非常好,可以在没有CDN的情况下使用(关闭“橙色云”)。他们的DNS与Netlify的CDN上托管的内容配合良好

下面是如何通过Netlify设置来实现这一点

  • 将静态资产部署到主自定义域中的Netlify站点,假设它是my-example.com。出于测试目的,您可以使用Netlify(something-something-1234.Netlify.com)上的内置站点名,而不是my-example.com。下面的示例重定向是“主机不可知”的,因此将使用Netlify主机名和生产主机名
  • 找到动态内容的所有路径——在本例中,假设/main/*和/app/*是动态的,并且您的后端托管在Heroku上
  • 创建以指向这些路径。如果您愿意,可以通过CloudFlare的CDN托管它们以保护您的API—Netlify代理到Heroku上CloudFlare前端的站点效果很好。你也可以选择直接代理给Heroku,这样就不那么复杂了。Netlify内置了一些DDoS保护,仍然“在”您的Heroku应用程序前面。由你决定
  • 部署这些代理规则并进行测试
  • Netlify的代理(技术上是反向代理)可以连接到您想要的任何后端,并且不会向访问者显示URL-在他们看来(浏览器中的URL栏,HTTPS连接),就好像他们一直连接到my-example.com,但内容是从您的后端返回的(包括HTTP状态代码。如果由Heroku应用程序发送的
    缓存控制指令指示,则此响应将缓存在Netlify的CDN上。
    HTTP头指令。请注意,CloudFlare将更改您的缓存控制头,以防您在其代理的内容上设置它!Netlify不会。)

    以下是常见的设置:

    /main/*https://yourapp.herokuapp.com/main/:splat 200!
    /app/*https://yourapp.herokuapp.com/main/:splat 200!
    

    请注意,如果您将/main或/app下的任何资产部署到Netlify,它们将被忽略,因为这些规则后面有
    。有关其工作原理和备选方案的更多详细信息,请参阅(TL;DR:在Netlify上部署一些东西,比如/main/logo.png,但Heroku不应该提供任何服务,而不是在Heroku上部署/main/*所需的所有内容)


    请注意,我建议在Netlify和Heroku上使用相同的路径(
    /main/*
    ),而不是代理到
    /somethingelse/*
    ,因为在路径匹配时调试资产加载更容易。但这不是一个要求。

    免责声明:我为Netlify工作

    您完全可以做到这一点,而无需运行自己的服务器或支付任何额外费用

    由于Netlify已经有了CDN,将其置于Netlify的前面是次优的。这样做除了效率低下之外,还会破坏Netlify的性能,并且会降低我们观察到的页面服务速度。它可能会工作,但不推荐使用。然而,CloudFlare的DNS性能非常好,可以在没有CDN的情况下使用(关闭“橙色云”)。他们的DNS与Netlify的CDN上托管的内容配合良好

    下面是如何通过Netlify设置来实现这一点

  • 将静态资产部署到主自定义域中的Netlify站点,假设它是my-example.com。出于测试目的,您可以使用Netlify(something-something-1234.Netlify.com)中的内置站点名,而不是my-example.com。下面的示例重定向是“主机不可知的”因此,将使用Netlify主机名和生产主机名
  • 找到动态内容的所有路径——在本例中,假设/main/*和/app/*是动态的,并且您的后端托管在Heroku上
  • 创建以指向这些路径。如果您愿意,可以通过CloudFlare的CDN托管这些路径以保护您的API-Netlify代理到Heroku上CloudFlare前端的站点效果很好。您也可以选择直接代理到Heroku,这样就不那么复杂了。Netlify内置了一些DDoS保护,并且仍然“在Heroku前面”你的Heroku应用程序。由你决定
  • 部署这些代理规则并进行测试
  • Netlify的代理(技术上是反向代理)可以连接到您想要的任何后端,并且不会向访问者显示URL-在他们看来(浏览器中的URL栏,HTTPS连接),就好像他们一直连接到my-example.com,但内容是从您的后端返回的(包括HTTP状态代码。如果由Heroku应用程序发送的
    缓存控件指示,则此响应将缓存在Netlify的CDN上。
    HTTP头指令。请注意,CloudFlare将更改