Я уже несколько лет использую некоторые службы в виде контейнеров-докеров на капле DigitalOcean, и недавно я подумал, что пришло время обновить один из них до последней версии (рассматриваемая служба - это платформа для ведения блогов-призраков). Раньше моя рабочая установка использовала Кэдди в качестве обратного прокси, поэтому я мог получить доступ к своему блогу, перейдя в blog.mydomain.example
. Настройка Caddyfile выглядела так:
blog.mydomain.example {
proxy / 192.0.2.5:1268
}
Где IP: порт - это порт локального контейнера докеров-призраков.
Однако после обновления моего экземпляра-призрака до последней версии и сохранения той же конфигурации я получил странную ошибку. Переход к blog.mydomain.example
будет загружаться в течение длительного времени, а затем внезапно перенаправить на https://192.0.2.5:2368, что, конечно, не сработает, поскольку это локальный IP-адрес в моей капле. После долгого рыскания в Интернете я в конце концов нашел исправление, которое потребовало изменить мой Caddyfile следующим образом:
blog.mydomain.example {
proxy / 192.0.2.5:1268 {
transparent
}
}
В страница caddy docs для прокси немного о том, что делает прозрачный:
прозрачный: Передает информацию хоста из исходного запроса, как и ожидают большинство серверных приложений.
Сокращение для:
header_upstream Хост {host}
header_upstream X-Real-IP {удаленный}
header_upstream X-Forwarded-For {удаленный}
header_upstream X-Forwarded-Proto {схема}
Я также читаю Эта статья о типах прокси, но я до сих пор не понимаю, что значит сделать обратный прокси прозрачным и зачем он понадобился в данном случае. Может ли кто-нибудь пролить свет?
Здесь это означает, что Caddy не изменяет запрос, удаляя заголовок HTTP Host при передаче запроса на ваш веб-сервер в контейнере Docker.
Это могут быть причины, по которым это требуется сейчас:
Host
заголовок, соответствующий имени хоста, установленному в программном обеспечении.Host
заголовок по умолчанию.