Облачный балансировщик нагрузки 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.
В пользовательском интерфейсе вы можете отредактировать LB и добавить «новое правило хоста и пути», а также установить «Хосты» и «Перенаправление хостов» для вашего домена. Сделайте это для каждого домена.
Используя 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
Чтобы изменения вступили в силу, потребуется несколько минут.