Отправлять 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. Это то, что вам нужно переопределить в вашем случае