Рейтинг:0

Переписать и кэшировать URL-адреса ответов в обратном прокси-сервере

флаг id

В настоящее время у нас есть программное решение, которое нужно звонить домой, например. для автоматического обновления необходимо связаться с реестром контейнеров Azure. Мы ограничены только исходящими подключениями к пример.com, все остальные исходящие соединения блокируются брандмауэрами клиентов.Поэтому все соединения, необходимые для работы программного обеспечения, должны проходить через наш обратный прокси-сервер.

Поэтому мы создали обратный прокси, например пример.com/acr/* который проксирует соединение с пример.azurecr.io. Вот все нормально работает. У меня проблема: что мне делать с возвращаемыми URL-адресами в ответе?

Например, запросив образ докера через example.com/arc/что-то Я получаю такой ответ, сообщая докеру, где хранятся большие двоичные объекты контейнера докера.

HTTP/1.1 307 Временное перенаправление
Расположение: https://weumanaged131.blob.core.windows.net/...e5698526-1gpll71q59//docker/registry/v2/blobs/sha256/a8/a87a....

Очевидно, я не могу подключиться к этому URL, потому что я ограничен пример.com.

Вопрос: Можно ли каким-то образом переписать и кэшировать URL-адреса ответа с таким URL-адресом: example.com/acr/<UUID>(со случайным UUID)? При вызове этого URL-адреса через обратный прокси-сервер обратный прокси-сервер проксирует URL-адрес исходного URL-адреса местоположения, как показано выше. Если есть другое решение для перенаправления URL-адресов ответов через мой обратный прокси-сервер, я буду рад их услышать.

Возможно ли что-то подобное с nginx? Я не ограничен nginx, если какое-то другое решение может решить эту проблему.

Спасибо, Филипп

Редактировать: чтобы было понятно, программное решение устанавливается на машину в сети клиента. Сеть клиента разрешает только исходящие соединения www.example.com именно с этой машины. Обратный прокси-сервер установлен на сервере в нашей сети (в данном случае в нашей облачной сети Azure). Поэтому мы не можем вызывать другие домены с этой машины.

Рейтинг:0
флаг us

Вам нужно использовать прямой прокси-сервер, такой как Squid, а не обратный прокси-сервер, такой как nginx.

Установите Сквид на www.example.com сервер и настройте свое программное решение для использования прямого прокси-сервера на www.example.com.

Рейтинг:0
флаг fk

Я не уверен, что слежу за всем этим, но если у вас есть прокси, то почему все не должно проходить через прокси? Почему вызов weumanaged131.blob.core.windows.net не проходит через прокси?

Просто для теста, в среде Linux прокси можно установить для любой программы/сервиса через переменные http_proxy и https_proxy. Возможно, добавление их в начало служебного скрипта помогло бы. Например. экспортировать http_proxy=http://proxy:port И если для этого требуется аутентификация пользователя: экспортировать http_proxy=http://имя пользователя:пароль@прокси:порт В случае с докером хитростей больше, или могут потребоваться переменные с заглавными буквами: HTTP_PROXY и HTTPS_PROXY.

phiob avatar
флаг id
Спасибо за ответ, но мне кажется, я что-то не так объяснил. Я отредактировал пост, чтобы прояснить ситуацию. Мы вообще не устанавливали прокси на наших серверах, только обратный прокси для вызовов на определенные URL-адреса.
djdomi avatar
флаг za
либо опубликовать URL-адрес, либо скрыть его, мне кажется, что azurecr.io может быть доменом?

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.