Назад | Перейти на главную страницу

Прокси-сервер HTTP за балансировщиком нагрузки GCP с базовой аутентификацией

Я хочу запустить прокси-службу HTTP (S) в кластере GKE и воспользоваться существующим входом Kubernetes и балансировщиком нагрузки GCP, чтобы обеспечить завершение TLS и стабильный общедоступный IP-адрес для службы. Клиенты будут получать доступ к прокси через общедоступный Интернет, используя базовую аутентификацию.

Пока что я столкнулся с тремя проблемами:

  1. Сложно настроить проверку состояния HTTP для прокси, потому что проверка работоспособности может быть настроена только с относительным путем (например, GET /), а прокси-сервер отвечает только на запросы полностью определенных URL-адресов (например, `GET http://www.example.com). Я смог обойти это, изменив реализацию прокси-сервера (с открытым исходным кодом), добавив проверку работоспособности по относительному URL-адресу.
  2. Точно так же для карты URL требуется относительный путь, начинающийся с символа '/'. Мне удалось обойти это, указав прокси-службу как серверную часть по умолчанию для входящего трафика., который используется, если ни одно из правил хоста / пути не совпадает.
  3. Вот где я застрял. Балансировщик нагрузки, кажется, лишает Proxy-Authorization заголовок отправлено клиентом. Поэтому, когда запросы поступают на прокси-сервер, в них отсутствует заголовок аутентификации и возникает ошибка 407 Proxy Authentication Required.

Очевидно, что отключить аутентификацию на прокси-сервере нельзя. Я не нашел никакой документации, подтверждающей, что балансировщик нагрузки удаляет этот заголовок или почему он это делает.

Да Балансировщик нагрузки HTTP (S) по умолчанию работает с 4. Но вы можете создать «Определяемый пользователем заголовок запроса». Пожалуйста, взгляните на ссылка1 и ссылка2

Вы пытаетесь использовать этот тип балансира для чего-то, для чего он не предназначен. Балансировщики нагрузки HTTP GCP - это обратные HTTP-прокси, а не интерфейс для прямых прокси. То, что у вас работает до сих пор, по сути, работает случайно.

Я бы предположил, что вашему приложению действительно нужен Балансировщик нагрузки TCP а не HTTP.