Отправлять HTTPS-запросы на один и тот же хост, но разные ips хоста

Я хотел бы отправлять HTTPS-запросы на один и тот же хост, но каждый раз выбирал бы целевой IP.

Например, "dig digitalocean.com" показывает эти IP-адреса:

digitalocean.com.   300 IN  A   104.16.110.208
digitalocean.com.   300 IN  A   104.16.112.208
digitalocean.com.   300 IN  A   104.16.109.208
digitalocean.com.   300 IN  A   104.16.113.208
digitalocean.com.   300 IN  A   104.16.111.208

С HTTP это работает:

HTTPoison.get("http://104.16.110.208/", [{"host","www.digitalocean.com"}])
{:ok,
 %HTTPoison.Response{body: "", headers: [...], request_url: "http://104.16.110.208/",
  status_code: 301}}

Но с HTTPS я получаю ошибку:

HTTPoison.get("https://104.16.110.208/", [{"host", "www.digitalocean.com"}])
{:error,
 %HTTPoison.Error{id: nil,
  reason: {:options, {{:server_name_indication, '104.16.110.208'}}}}}

Есть ли способ добиться этого с помощью HTTPS с HTTPoison или в Elixir/Erlang без изменения etc/hosts?

1 ответ

Вы должны использовать его, как показано ниже

HTTPoison.get("https://104.16.110.208/", [{"host","www.digitalocean.com"}], hackney: [{:ssl_options, [{:server_name_indication, "digitalocean.com"}]}])

или же

HTTPoison.get("https://104.16.110.208/", [{"host","www.digitalocean.com"}], hackney: [ssl_options: [server_name_indication: 'digitalocean.com']])

Поскольку вы используете IP для подключения, по умолчанию server_name_indication будет считаться IP. Это то, что вам нужно переопределить в вашем случае

За работой

Другие вопросы по тегам