Эти инструкции предназначены для пользователей Azure AKS, но решение для этого решения для ссылок предварительного просмотра Facebook / социальных сетей с постоянным перенаправлением 308, вероятно, будет работать на любом облачном провайдере (хотя это не было проверено) - вы простонеобходимо изменить способ входа / получения учетных данных и т. д.
Спасибо Rico за решение!Так как это проверяется только на Facebook, вы можете или не хотите идти по маршруту приложения ConfigMap (о котором упоминал Рико выше), в этом случае выполняется ручное редактирование ConfigMap вместо использования kubectl apply -f
для применения одного сохраненного локально.
- Pickup AZ Credentials для вашего cluser (
az login
) - Примите роль для вашего кластера:
az aks get-credentials --resource-group yourGroup --name your-cluster
- Просмотрите ваш кластер:
az aks browse --resource-group yourGroup --name your-cluster
- Перейдите к пространству имен, содержащему ваши контейнеры Ingress nGinx (не бэкэнд-сервисы - хотя они могут быть в том же NS).
- В левом меню навигации (чуть выше настроек) найдите вкладку «ConfigMaps» ищелкните по нему.
- Отредактируйте элемент «Данные» в YAML и добавьте следующую строку (обратите внимание на кавычки вокруг имени и номера в ключе / значении):
"data": {
"some-other-setting-here": "false",
"http-redirect-code": "301"
}
Вам потребуется запятая после каждогострока ключ / значение, кроме последней. - Перезапустите POD контроллера nginx, удалив его заставьте SURE вы не удалите развертывание, как я.
- Если вы хотите работать продуктивно, вы можете обновить вашу установку nginx (от helm), которая перезапустит / заново создаст контейнер в процессе, используя:
helm upgrade ngx-ingress stable/nginx-ingress
Где ngx-ingress - имя вашего шлемаустановить.Также обратите внимание, что использование флага '--reuse-values' приведет к сбою обновления (re: https://github.com/helm/helm/issues/4337) - Если вы не знаете имя, которое вы использовали для nginx при первоначальной установке его из Helmвы можете использовать
helm list
, чтобы найти его. - Наконец, чтобы проверить и убедиться, что ваши Re-Directs используют правильный код ConfigMap, сверните ваш http-сайт с помощью:
curl myhttpdomain.com
Вы должны получить что-то вроде этого:
`` `
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.15.3</center>
</body>
</html>
` ``
Здесь важно отметить, что если вы вносите изменения в 301, перенаправьтепопытайтесь исправить ссылку предварительного просмотра для Facebook или одного из других свойств социальных сетей (твиттер и т. д.), тогда, по всей вероятности, это не исправит никакой ссылки на любую страницу / пост, на который вы уже ссылались - по крайней мере, не сразу.
Все социальные свойства используют интенсивное кэширование, чтобы ограничить использование своих ресурсов, но вы можете проверить, исправляет ли это выше проблему с ссылкой для предварительного просмотра, ссылаясь на НОВУЮ страницу / сообщение, на которое вы ранее не ссылалисьed.
Будьте осведомлены о последствиях для 'POST'
Таким образом, основная причина, по которой nginx-ingress использует код 308, заключается в том, что он сохраняет "тело" / полезную нагрузку в тех случаях, когда вы находитесьотправка запроса POST (в отличие от обычной ссылки GET-запроса, которую вы делаете с помощью браузера и т. д.).
Для меня это не было проблемой, но если вы по какой-либо причине отправляете сообщение по адресу http и ожидаете, что оно будет перенаправлено без проблем, что, вероятно, не будет работать - после того, как вы переключитесь на перенаправление 301, обсуждаемое всообщение.
ОДНАКО, если вы не ожидаете бесшовного перенаправления при отправке запросов POST (я думаю, что большинство людей, вероятно, нет, я знаю, что нет), то я думаю, что это лучший способ исправить Facebook308 Постоянное поведение перенаправления.