Apache 配置Google负载平衡器主机和路径规则,以便使用GCF正确地为react.js应用程序提供服务
我们将在React.js应用程序中使用Google云负载平衡器。React.js应用程序具有特殊的路由规则。我们将按照以下方式组织我们的应用程序结构Apache 配置Google负载平衡器主机和路径规则,以便使用GCF正确地为react.js应用程序提供服务,apache,routing,google-cloud-platform,load-balancing,google-compute-engine,Apache,Routing,Google Cloud Platform,Load Balancing,Google Compute Engine,我们将在React.js应用程序中使用Google云负载平衡器。React.js应用程序具有特殊的路由规则。我们将按照以下方式组织我们的应用程序结构 -[BUCKET]uiresources -[FILE]index.html -[FOLDER]dist -[FILE]src.bundle.js -[FOLDER]... -[FILE] 我们还需要将api调用路由到GCF端点。这意味着它们应该被代理到另一个域,这似乎是不可能的,因为我们以VM为目标配置后端服务
-[BUCKET]uiresources
-[FILE]index.html
-[FOLDER]dist
-[FILE]src.bundle.js
-[FOLDER]...
-[FILE]
我们还需要将api调用路由到GCF端点。这意味着它们应该被代理到另一个域,这似乎是不可能的,因为我们以VM为目标配置后端服务
路由示例
- 或->服务呼叫
- 或->-用于加载包括index.html在内的资源
- ^index.html]->用于从浏览器返回index.html的直接路由
- 可以根据主机名和路径添加规则。主机与请求的主机名匹配。对于每个主机,您可以指定一个路径匹配器(它是不同路径字符串的集合)来指定要匹配的路径(例如
,/foo/*
,/bar/*
)。这些正是您在配置UI中看到的文本框/foo/bar/baz/*
路径列对应于路径匹配器 - 您可以为同一路径字符串设置不同的规则,只要它们适用于不同的主机
- 如果未指定主机,则它将匹配所有主机
- 每个主机始终有一个默认路径匹配器
,它将决定如何处理任何已定义规则都不匹配的请求/*
- 路由请求的可用目的地为和
- 您将使用将请求路由到VM(实际上是一个实例组,它是VM的集合)
- 您将使用后端bucket将请求路由到存储在中的内容
- 当将请求从负载平衡器路由到时,您的VM将获得包含完整请求URI的请求。因此,VM上的服务可以通过查看路径来决定如何处理它
- 将请求从负载平衡器路由到时,请求中的完整路径(从
)应与存储在中的对象的路径匹配。如果您请求的是路径/
将被路由到后端存储桶,相应的GCS存储桶应该在此位置有一个文件https://www.example.org/foo/bar/baz/info.txt
/foo/bar/baz/info.txt
/ -------------------> /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.
谢谢您的回答,但不清楚如何设置重定向?在哪里可以配置?在每个VM实例上,或者负载平衡器有其他设置?GCE负载平衡器不允许您配置重定向。您必须在接收请求的应用程序中的VM上执行此操作。我如何集中重定向配置?我的意思是,如果我需要更改某些内容,我需要在所有虚拟机上更改它,如果我的基础设施由10个虚拟机或100个虚拟机组成,该怎么办?我可以使用VM模板,但它仍然不能解决跨所有VM实例配置分发的问题。您可以在后端服务中使用。托管实例组是使用。如果需要,它也支持。是的,你说得对。您可以通过更新模板来更新托管实例组中的所有实例。请注意,更新模板只会影响将在实例组中创建的任何新实例。使用旧模板运行的现有实例不会受到影响,除非重新创建它们。