Sdílet prostřednictvím


Konfigurace proxy serverů v sadě Azure SDK pro Javu

Tento článek obsahuje přehled konfigurace sady Azure SDK pro Javu pro správné použití proxy serverů.

Konfigurace proxy serveru HTTP

Klientské knihovny Azure pro Javu nabízejí několik způsobů konfigurace proxy serveru pro .HttpClient

Každá metoda poskytování proxy má své vlastní výhody a nevýhody a poskytuje různé úrovně zapouzdření. Pokud jste proxy server nakonfigurovali pro server HttpClient, použije proxy server po zbytek jeho životnosti. Je-li proxy svázána s určitou osobou HttpClient, může aplikace používat více HttpClient instancí, kde každá může ke splnění požadavků na proxy aplikace použít jinou proxy.

Možnosti konfigurace proxy serveru jsou:

Použití proxy prostředí

Tvůrci klientů HTTP ve výchozím nastavení kontrolují prostředí pro konfigurace proxy serveru. Tento proces využívá sadu Azure SDK pro Configuration rozhraní JAVA API. Když tvůrce vytvoří klienta, nakonfiguruje se kopie globální konfigurace načtená voláním Configuration.getGlobalConfiguration(). Toto volání přečte konfiguraci proxy serveru HTTP ze systémového prostředí.

Když tvůrce prostředí zkontroluje, vyhledá v uvedeném pořadí následující konfigurace prostředí:

  1. HTTPS_PROXY
  2. HTTP_PROXY
  3. https.proxy*
  4. http.proxy*

Představuje * dobře známé vlastnosti proxy serveru Java. Další informace naleznete v tématu Sítě a proxy servery Java v dokumentaci Oracle.

Pokud tvůrce najde některou ProxyOptions z konfigurací prostředí, vytvoří instanci voláním ProxyOptions.fromConfiguration(Configuration.getGlobalConfiguration()). Tento článek obsahuje další podrobnosti o ProxyOptions typu.

Důležité

Pokud chcete implicitně použít HTTPS_PROXY nebo HTTP_PROXY, Java vyžaduje, abyste nastavili vlastnost java.net.useSystemProxies systémového prostředí na true.

Můžete také vytvořit instanci klienta HTTP, která nepoužívá žádnou konfiguraci proxy serveru, která se nachází v proměnných systémového prostředí. Chcete-li přepsat výchozí chování, explicitně nastavíte v tvůrci klienta HTTP odlišně nakonfigurovaný Configuration . Když nastavíte Configuration v sestavovači, už nebude volat Configuration.getGlobalConfiguration(). Pokud například voláte configuration(Configuration) pomocí Configuration.NONE, můžete sestaviteli explicitně omezit možnost kontrolovat prostředí kvůli konfiguraci.

Následující příklad používá proměnnou HTTP_PROXY prostředí s hodnotou localhost:8888 k použití Fiddleru jako proxy serveru. Tento kód ukazuje vytvoření HTTP klienta pomocí knihoven Netty a OkHttp. (Další informace o konfiguraci klienta HTTP najdete v tématu Klienti a kanály HTTP.)

export HTTP_PROXY=localhost:8888
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder().build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder().build();

Pokud chcete zabránit použití proxy serveru prostředí, nakonfigurujte sestavovatele klienta HTTP s Configuration.NONE, jak je znázorněno v následujícím příkladu:

HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
    .configuration(Configuration.NONE)
    .build();

HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
    .configuration(Configuration.NONE)
    .build();

Použití konfiguračního proxy serveru

Místo čtení z prostředí můžete nakonfigurovat tvůrce klientů HTTP tak, aby používali vlastní Configuration se stejnými nastaveními proxy serveru, která jsou již přijata z prostředí. Tato konfigurace nabízí možnost opakovaně použitelných konfigurací, které jsou vymezeny na omezený případ použití. Když sestavovatel klienta HTTP vytváří HttpClient, použije to, co bylo vráceno z ProxyOptions jako ProxyOptions.fromConfiguration(<Configuration passed into the builder>).

Následující příklad používá konfigurace nastavené v objektu http.proxy* k použití proxy, která ověřuje Fiddlera jako proxy.

Configuration configuration = new ConfigurationBuilder()
    .putProperty("http.proxyHost", "localhost")
    .putProperty("http.proxyPort", "8888")
    .putProperty("http.proxyUser", "1")
    .putProperty("http.proxyPassword", "1")
    .build();

HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
    .configuration(configuration)
    .build();

HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
    .configuration(configuration)
    .build();

Použití explicitního proxy serveru

Klientské knihovny Java se dodávají s ProxyOptions třídou, která funguje jako typ klientských knihoven Azure pro konfiguraci proxy serveru. Můžete nakonfigurovat ProxyOptions síťový protokol používaný k odesílání proxy požadavků, adresu proxy serveru, přihlašovací údaje pro ověření proxy serveru a hostitele, na které se nevztahuje proxy. Vyžaduje se jenom síťový protokol proxy serveru a adresa proxy serveru. Při použití přihlašovacích údajů pro ověřování musíte nastavit uživatelské jméno i heslo.

Následující příklad vytvoří jednoduchou instanci ProxyOptions, která přesměrovává požadavky na výchozí adresu Fiddleru (localhost:8888):

ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("localhost", 8888));

Následující příklad vytvoří ověřený ProxyOptions, který zprostředkovává požadavky pro instanci Fiddler vyžadující ověření prostřednictvím proxy:

// Fiddler uses username "1" and password "1" with basic authentication as its proxy authentication requirement.
ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("localhost", 8888))
    .setCredentials("1", "1");

Tvůrce klientů HTTP můžete nakonfigurovat přímo tak ProxyOptions , aby označovali explicitní proxy server, který se má použít. Tato konfigurace je nejpodrobnější způsob, jak poskytnout proxy server, a obecně není tak flexibilní jako předání Configuration, které můžete upravit za účelem aktualizace požadavků na proxy server.

Následující příklad používá ProxyOptions Fiddler jako proxy server:

ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("localhost", 8888));

HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
    .proxy(proxyOptions)
    .build();

HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
    .proxy(proxyOptions)
    .build();

Další kroky

Nyní, když znáte konfiguraci proxy serveru v sadě Azure SDK pro Javu, podívejte se na Konfiguraci trasování v sadě Azure SDK pro Javu, abyste lépe porozuměli tokům ve vaší aplikaci a pomohli diagnostikovat problémy.