Облачный балансировщик нагрузки Google Http-to-https с несколькими бэкэндами

Моя цель — обеспечить перенаправление http-на-https для балансировщика нагрузки для трех групп экземпляров на Google Cloud Platform.

У меня есть один балансировщик нагрузки http-to-https, который перенаправляет на другой балансировщик нагрузки для моих трех приложений (3 серверных службы, 3 группы экземпляров). Я следовал документации , она отлично работает только для 1 из этих банковских сервисов, которые используются по умолчанию. Остальные 2 бэкэнда не перенаправляются на https, когда я скручиваю бэкэнд.


здесь не показано, но IP-адреса в обоих балансировщиках нагрузки совпадают

Когда я скручиваю https://domain1.fr -> ОК.
Когда я скручиваю http://domain1.fr -> 301 перенаправление на https -> ОК.

Когда я скручиваю https://domain2.fr -> ОК.
Когда я скручиваю http://domain2.fr -> ОК (но без перенаправления на https)

Когда я скручиваю https://domain3.fr -> ОК.
Когда я скручиваю http://domain3.fr -> ОК (но без перенаправления на https)

Здесь не показано, но если я в своем LoadBalancer изменю бэкэнд по умолчанию на backend2, он перенаправится на https для домена2.fr.

1 ответ

Вам придется добавить дополнительные правила хоста и пути для перенаправления http на https на основе определенного домена. Это можно сделать в пользовательском интерфейсе консоли Google Cloud или с помощью gcloud sdk.

  1. В пользовательском интерфейсе вы можете отредактировать LB и добавить «новое правило хоста и пути», а также установить «Хосты» и «Перенаправление хостов» для вашего домена. Сделайте это для каждого домена.

  2. Используя gcloud, вы можете экспортировать карту URL-адресов, изменить содержимое, как показано ниже, и загрузить ее.

а. экспортировать существующую карту URL-адресов –

gcloud compute url-maps export YOUR-URL-MAP --destination=/tmp/urlmap.yaml

Исходный файл yaml будет выглядеть следующим образом для перенаправления одного домена web1.example.net:

      name: webmap
kind: compute#urlMap
defaultUrlRedirect:
  hostRedirect: web1.example.net
  httpsRedirect: true
  redirectResponseCode: MOVED_PERMANENTLY_DEFAULT
  stripQuery: false

Добавьте второй домен, который вы хотите перенаправить — в данном случае это web2.example.net. Обратите вниманиеhostRulesиpathMatchersраздел. Вы можете добавить дополнительное правило хоста и pathMatcher для каждого домена –

      name: webmap
kind: compute#urlMap
defaultUrlRedirect:
  hostRedirect: web1.example.net
  httpsRedirect: true
  redirectResponseCode: MOVED_PERMANENTLY_DEFAULT
  stripQuery: false
hostRules:
- hosts:
  - web2.example.net
  pathMatcher: path-matcher-1
pathMatchers:
- defaultUrlRedirect:
    hostRedirect: web2.example.net
    httpsRedirect: true
    redirectResponseCode: MOVED_PERMANENTLY_DEFAULT
    stripQuery: false
  name: path-matcher-1

Вы можете импортировать этот файл -

gcloud compute url-maps import YOUR-URL-MAP --source=/tmp/urlmap.yaml

Чтобы изменения вступили в силу, потребуется несколько минут.

Другие вопросы по тегам