配置Google负载均衡器主机和路径规则,以使用GCF正确服务react.js应用程序 [英] Configure Google Load Balancer host and path rules to serve react.js application properly with GCF

查看:42
本文介绍了配置Google负载均衡器主机和路径规则,以使用GCF正确服务react.js应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们将在React.js应用中使用Google负载均衡。React.js应用程序有特殊的路由规则。我们将按以下方式组织我们的应用程序结构。

-[BUCKET]uiresources
  -[FILE]index.html
  -[FOLDER]dist
    -[FILE]src.bundle.js
    -[FOLDER]...
    -[FILE]

我们还需要将API调用路由到GCF端点。这意味着它们应该被代理到另一个域,这似乎是不可能的,因为我们使用VM作为目标来配置后端服务。

路由示例

  1. /->/index.html(到存储桶)
  2. /index.html->/index.html(到存储桶)
  3. /signup->/index.html(到存储桶)
  4. /smeroute->/index.html(仍在存储桶)
  5. /api/signup->antherhost.com/signup(到具有长url的GCF端点)
  6. /resources/image->/resources/image(到存储桶)

我们可以用另一种方式说,比如,如果我们的路由包含点,那将意味着我们请求文件,然后返回相应的文件,否则总是返回index.html。

如果子域有助于构建此类导航,则可以使用子域。例如:

另一个路由示例

那么,问题是如何做到这一点呢?我使用教程设置了负载均衡器,并尝试在这里配置规则,但没有成功。我从index.html问题开始,目前的情况就是这样。

之前我在Azure和简单的nginx服务器上管理过这一点,但是在这两个平台上可以使用更强大的路由配置。我不知道这是否可行,但希望有人能帮我。

所有VM实例都在带有Apache服务器的Debian 8下运行。我考虑过每个VM实例中的路由规则,但对我来说,现在看起来有点疯狂,将来会带来很多麻烦。

推荐答案

URL映射

您正在配置的URL路由在GCE HTTP/HTTPS负载平衡器配置中称为URL map

功能和限制

我推荐您read about URL maps to understand how it works。具体地说,您需要了解URL映射在负载均衡中的功能和限制。

此列表不全面,但更适合您的特定使用情形:

  • 您可以根据主机名和路径添加规则。主机与请求的主机名匹配。对于每个主机,您可以指定一个路径匹配器(它是不同路径字符串的集合)来指定要匹配的路径(例如,/foo/*/bar/*/foo/bar/baz/*)。这些正是您在配置UI中看到的文本框。PathsUI中的列对应于路径匹配器。

  • 您可以为同一路径字符串设置不同的规则,只要它们用于不同的主机。

  • 如果未指定主机,它将匹配所有主机。

  • 每台主机始终有一个默认路径匹配器/*,它将决定如何处理与任何定义的规则都不匹配的请求。

  • 可用于路由请求的目标为backend servicesbackend buckets

  • 您将使用backend service将请求路由到VM(实际上是实例组,它是VM的集合)。

  • 您将使用后端存储桶将请求路由到Google Cloud Storage buckets中存储的内容。

    /li>
  • 将负载均衡的请求路由到backend service时,您的虚拟机会得到包含完整请求URI的请求。因此,虚拟机上的服务可以通过查看路径来决定如何处理它。

  • 将请求从负载均衡路由到backend bucket时,请求中的完整路径(来自/)应与Google Cloud Storage Bucket中存储的Object的路径匹配。例如。如果您的请求是路由到后端存储桶的路径https://www.example.org/foo/bar/baz/info.txt,则相应的GCS存储桶应该在此位置/foo/bar/baz/info.txt有一个文件。

您的用例的URL映射配置

话虽如此,只要稍加修改并利用HTTP 301 (permanent URL redirects)使用后端服务,就可以映射您指定的所有请求。

/ -------------------> /index.html
/index.html ---------> /index.html (in GCS bucket)
/signup -------------> /index.html (in GCS bucket)
/someroute ----------> /index.html (in GCS bucket)
/api/signup ---------> anotherhost.com/signup
/resources/images/* -> /resources/images/* (in GCS bucket)
/* ------------------> Recommend using a backend service which returns a 404.

您需要按如下方式配置URL映射:

/ -------------------> Backend service which returns a HTTP 301 (permanent URL redirection) /index.html
/index.html ---------> Backend bucket (will take to /index.html in the GCS bucket)
/signup -------------> Backend service which returns a HTTP 301 (permanent URL redirection) /index.html (which will cause the user to hit your GCS bucket)
/someroute ----------> Backend service which returns a HTTP 301 /index.html (will redirect to the /index.html content from your GCS bucket)
/api/signup ---------> Backend Service which returns a HTTP 301 (permanent URL redirection) to anotherhost.com/signup
/resources/images/* -> Backend bucket - Will pull /resources/images/* in GCS bucket
/* ------------------> Backend Service which returns a 404. 

这篇关于配置Google负载均衡器主机和路径规则,以使用GCF正确服务react.js应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆