HTTPS Loadbalncer 后端 URL 无法加载渲染页面

问题描述

我的应用程序使用 http 来运行所有使用 docker-compose 的服务。应用程序运行没有任何问题,我们正在尝试为所有服务设置 HTTPS 负载平衡器。

我们使用此文档创建了一个 LoadBalancer。 https://cloud.google.com/iap/docs/load-balancer-howto#console_1

我们添加了三个后端服务,并为所有后端服务设置了主机和路径规则。

HTTPS_Loadbalancer

但是当尝试查看以下 HTTPS 网址时

https://Loadbalancer-ip:/strapi

https://Loadbalancer-ip:/auth

https://Loadbalancer-ip:/images/1.

我正在获取 404 页面。但它单独适用于所有不匹配(认)。

解决方法

我想帮助您解决当前的限制。

A URL redirect redirects your domain's visitors from one URL to another.

在部署 URL 映射之前,请确保验证 URL 映射配置以确保映射按预期将请求路由到适当的后端。您可以通过向网址映射配置添加测试来实现此目的。

使用 gcloud compute url-maps validate 命令验证网址映射配置。


gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE

PATH_TO_URL_MAP_CONFIG_FILE:替换为包含用于验证的 URL 映射配置的文件的路径。

验证对现有负载平衡器网址映射的更改

如果您现有的负载均衡器需要更改网址映射,您可以在使这些配置更改生效之前对其进行测试。

  1. 将负载均衡器的现有网址映射导出到 YAML 文件。
gcloud compute url-maps export URL_MAP_NAME \
   --destination PATH_TO_URL_MAP_CONFIG_FILE \
   --global

  1. 使用新配置编辑 YAML 文件。例如,如果您想编辑外部 HTTP(S) 负载平衡器并将所有路径为 /video 的请求发送到名为 video-backend-service 的新后端服务,您可以将测试添加到网址映射配置中,如下所示如下:

具有单个默认 web-backend-service 的现有网址映射配置:

 kind: compute#urlMap
 name: URL_MAP_NAME
 defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service

修改网址映射配置,添加路径匹配器并测试默认 web-backend-service 和新的 video-backend-service 后端服务:

 kind: compute#urlMap
 name: URL_MAP_NAME
 defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
 hostRules:
 - hosts:
   - '*'
   pathMatcher: pathmap
 pathMatchers:
 - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
   name: pathmap
   pathRules:
   - paths:
     - /video
     - /video/*
     service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/video-backend-service
 tests:
 - description: Test routing to existing web service
   host: foobar
   path: /
   service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
 - description: Test routing to new video service
   host: foobar
   path: /video
   service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/video-backend-service
  1. 验证新配置。
gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE

如果所有测试都成功通过,您应该会看到一条成功消息,例如:

Successfully validated [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/URL_MAP_CONFIG_FILE_NAME

如果测试失败,则会出现错误消息。对网址映射配置文件进行必要的修复,然后再次尝试验证。

Error: Invalid value for field 'urlMap.tests': ''.
Test failure: Expect URL 'HOST/PATH' to map to service 'EXPECTED_BACKEND_SERVICE',but actually mapped to 'ACTUAL_BACKEND_SERVICE'.
  1. 一旦您知道新配置有效并且不会影响您现有的设置,您就可以将其导入到网址映射中。请注意,此步骤还将使用新配置部署 url 映射。
gcloud compute url-maps import URL_MAP_NAME \
   --source PATH_TO_URL_MAP_CONFIG_FILE \
   --global

重要提示:如果您最初在 Cloud Console 中设置负载平衡器,则网址映射名称与负载平衡器的名称相同。

玩得开心!

,
  1. 您是说状态代码为 404 的页面,还是无法访问您的页面?

  2. 请确保您指定了正确的后端服务 ip 和端口。

  3. 您要将 Loadbalancer-ip:/strapi 映射到 service-ip:/strapi 还是 service-ip:

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...