Dokku - получить IP-адрес обратного прокси-сервера nginx внутри контейнера?

На моем сервере ASP.NET Core у меня есть переадресация для поддержки моего рабочего процесса аутентификации OpenId Connect:

public void ConfigureServices(IServiceCollection services)
{
  services.Configure<ForwardedHeadersOptions>(options =>
  {
      options.ForwardedHeaders = ForwardedHeaders.XForwardedProto | ForwardedHeaders.XForwardedFor;

      // Only loopback proxies are allowed by default.
      // Clear that restriction because forwarders are enabled by explicit
      // configuration.
      options.KnownNetworks.Clear();
      options.KnownProxies.Clear();
  }
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
  app.UseForwardedHeaders();
}

Однако я хотел бы настроить KnownProxiesKnownNetworks). Есть ли способ узнать IP-адрес прокси-сервера (в контексте контейнера)? Является ли конфигурация статической? Если нет, то можно ли это автоматизировать?

Кроме того, этот адрес будет таким же, как адрес хоста. т.е. поможет ли преобразование IP-адреса в host.docker.internal? В любом случае, это не так просто сделать в среде Linux...

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


person Mitkins    schedule 13.08.2019    source источник
comment
Я думаю, вы должны использовать переменные Environmnet для установки своих URI. Это может привести к тому, что ваше приложение станет независимым от платформы. Вы можете установить переменную окружения через свой файл докеров или в конвейерах CI/CD. Следуйте похожему вопросу   -  person Nima Boobard    schedule 13.08.2019
comment
Да, я думаю, это хороший путь. Однако для этого мне нужно подтвердить, что IP-адрес прокси-сервера (из контейнера) в Dukko не является эфемерным.   -  person Mitkins    schedule 13.08.2019


Ответы (1)


IP-адрес контейнера является эфемерным и может меняться при перестроении или повторном развертывании приложения. По умолчанию Dokku запускает ваше приложение во внутренней docker0 сети, и единственными объектами, которые могут получить доступ к контейнеру, являются службы, работающие на самом сервере, поэтому доступ со всех сетевых интерфейсов безопасен.

person Jose Diaz-Gonzalez    schedule 13.08.2019
comment
Прохладный. Спасибо. В этом случае я доволен примером кода! - person Mitkins; 14.08.2019