View a markdown version of this page

Configurazione dei proxy HTTP - AWS SDK for Java 2.x

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurazione dei proxy HTTP

È possibile configurare i proxy HTTP utilizzando il codice, impostando le proprietà del sistema Java o impostando le variabili di ambiente.

Configura in codice

I proxy vengono configurati in codice con un ProxyConfiguration generatore specifico per il cliente quando si crea il client di servizio. Il codice seguente mostra un esempio di configurazione proxy per un client Apache-based HTTP utilizzato da un client di servizio Amazon S3.

SdkHttpClient httpClient1 = ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://proxy.example.com")) .username("username") .password("password") .addNonProxyHost("localhost") .build()) .build(); S3Client s3Client = S3Client.builder() .httpClient(httpClient) .build();

La sezione relativa a ciascun client HTTP in questo argomento mostra un esempio di configurazione del proxy.

Configura i proxy HTTP con impostazioni esterne

Anche se non utilizzi esplicitamente un ProxyConfiguration builder nel codice, l'SDK cerca impostazioni esterne per configurare una configurazione proxy predefinita.

Per impostazione predefinita, l'SDK cerca innanzitutto le proprietà del sistema JVM. Se viene trovata anche una sola proprietà, l'SDK utilizza il valore e qualsiasi altro valore delle proprietà di sistema. Se non sono disponibili proprietà di sistema, l'SDK cerca le variabili di ambiente proxy.

L'SDK può utilizzare le seguenti proprietà di sistema e variabili di ambiente Java.

Proprietà del sistema Java
Proprietà del sistema Description Supporto per client HTTP

http.proxyhost

Nome host del server proxy HTTP

Tutti

Porta http.proxy

Numero di porta del server proxy HTTP

Tutti

Utente http.proxy

Nome utente per l'autenticazione tramite proxy HTTP

Tutti

Password http.proxy

Password per l'autenticazione tramite proxy HTTP

Tutti

http.non ProxyHosts

Elenco degli host che devono essere raggiunti direttamente, bypassando il proxy. Questo elenco è valido anche quando si utilizza HTTPS.

Tutti

HTTPS.proxyHost

Nome host del server proxy HTTPS

Netty, CRT

Https. ProxyPort

Numero di porta del server proxy HTTPS

Netty, CRT

Utente https.proxy

Nome utente per l'autenticazione tramite proxy HTTPS

Netty, CRT
Password https: proxy Password per l'autenticazione tramite proxy HTTPS Netty, CRT
Variabili di ambiente
Variabile di ambiente Description Supporto per client HTTP
HTTP_PROXY 1

Un URL valido con uno schema HTTP

Tutti

HTTPS_PROXY 1

Un URL valido con uno schema HTTPS

Netty, CRT

NESSUN PROXY 2

Elenco degli host che devono essere raggiunti direttamente, bypassando il proxy. L'elenco è valido sia per HTTP che per HTTPS.

Tutti

Tutti: tutti i client HTTP offerti dall'SDK—UrlConnectionHttpClient,,ApacheHttpClient,NettyNioAsyncHttpClient. AwsCrtAsyncHttpClient

Netty: il client Netty-based HTTP (). NettyNioAsyncHttpClient

CRT - I client AWS CRT-based HTTP, (e)AwsCrtHttpClient. AwsCrtAsyncHttpClient

1 La variabile di ambiente richiesta, se HTTP_PROXY oHTTPS_PROXY, dipende dall'impostazione dello schema nel client. ProxyConfiguration Lo schema predefinito è HTTP. Il frammento seguente mostra come modificare lo schema in HTTPS utilizzato per la risoluzione delle variabili di ambiente.

SdkHttpClient httpClient = ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .scheme("https") .build()) .build();

2 La variabile di NO_PROXY ambiente supporta una combinazione di separatori «|» e «,» tra i nomi host. Per i formati jolly supportati, vedere. comportamento non ProxyHosts jolly

Usa una combinazione di impostazioni

È possibile utilizzare una combinazione di impostazioni del proxy HTTP nel codice, nelle proprietà di sistema e nelle variabili di ambiente.

Esempio— configurazione fornita da una proprietà di sistema e dal codice
// Command line with the proxy password set as a system property. $ java -Dhttp.proxyPassword=SYS_PROP_password -cp ... App // Since the 'useSystemPropertyValues' setting is 'true' (the default), the SDK will supplement // the proxy configuration in code with the 'http.proxyPassword' value from the system property. SdkHttpClient apacheHttpClient = ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://localhost:1234")) .username("username") .build()) .build(); // Use the apache HTTP client with proxy configuration. DynamoDbClient dynamoDbClient = DynamoDbClient.builder() .httpClient(apacheHttpClient) .build();

L'SDK risolve le seguenti impostazioni proxy.

Host = localhost Port = 1234 Password = SYS_PROP_password UserName = username Non ProxyHost = null
Esempio— sono disponibili sia le proprietà di sistema che le variabili di ambiente

Il ProxyConfiguration generatore di ogni client HTTP offre impostazioni denominate useSystemPropertyValues euseEnvironmentVariablesValues. Per impostazione predefinita, entrambe le impostazioni sonotrue. Quandotrue, l'SDK utilizza automaticamente i valori delle proprietà di sistema o delle variabili di ambiente per le opzioni che non sono fornite dal ProxyConfiguration generatore.

Importante

Le proprietà del sistema hanno la precedenza sulle variabili di ambiente. Se viene trovata una proprietà del sistema proxy HTTP, l'SDK recupera tutti i valori dalle proprietà di sistema e nessuno dalle variabili di ambiente. Se vuoi dare priorità alle variabili di ambiente rispetto alle proprietà del sistema, imposta su. useSystemPropertyValues false

Per questo esempio, le seguenti impostazioni sono disponibili in fase di esecuzione:

// System properties http.proxyHost=SYS_PROP_HOST.com http.proxyPort=2222 http.password=SYS_PROP_PASSWORD http.user=SYS_PROP_USER // Environment variables HTTP_PROXY="http://EnvironmentUser:EnvironmentPassword@ENV_VAR_HOST:3333" NO_PROXY="environmentnonproxy.host,environmentnonproxy2.host:1234"

Il client di servizio viene creato con una delle seguenti istruzioni. Nessuna delle istruzioni imposta esplicitamente un'impostazione proxy.

DynamoDbClient client = DynamoDbClient.create(); DynamoDbClient client = DynamoDbClient.builder().build(); DynamoDbClient client = DynamoDbClient.builder() .httpClient(ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .build()) .build()) .build();

Le seguenti impostazioni proxy vengono risolte dall'SDK:

Host = SYS_PROP_HOST.com Port = 2222 Password = SYS_PROP_PASSWORD UserName = SYS_PROP_USER Non ProxyHost = null

Poiché il client di servizio ha impostazioni proxy predefinite, l'SDK cerca le proprietà di sistema e quindi le variabili di ambiente. Poiché le impostazioni delle proprietà di sistema hanno la precedenza sulle variabili di ambiente, l'SDK utilizza solo le proprietà di sistema.

Se l'uso delle proprietà di sistema viene modificato false come mostrato nel codice seguente, l'SDK risolve solo le variabili di ambiente.

DynamoDbClient client = DynamoDbClient.builder() .httpClient(ApacheHttpClient.builder() .proxyConfiguration(ProxyConfiguration.builder() .useSystemPropertyValues(Boolean.FALSE) .build()) .build()) .build();

Le impostazioni proxy risolte tramite HTTP sono:

Host = ENV_VAR_HOST Port = 3333 Password = EnvironmentPassword UserName = EnvironmentUser Non ProxyHost = environmentnonproxy.host, environmentnonproxy2.host:1234

comportamento non ProxyHosts jolly

ConnonProxyHosts, è possibile specificare gli host che bypassano il proxy. Imposta questo valore tramite il ProxyConfiguration generatore, la proprietà http.nonProxyHosts di sistema o la variabile di NO_PROXY ambiente. Ogni fonte supporta i seguenti formati di immissione.

  • Host esatto: example.com (corrisponde solo all'host specificato)

  • Wild card iniziale: *.example.com (corrisponde al dominio e a tutti i sottodomini)

  • Wildcard nuda: * (ignora tutti gli host)

  • Intervallo CIDR: 10.0.0.0/8 (corrisponde a tutti gli indirizzi IP nell'intervallo)

Differenze di comportamento tra i client HTTP

Il tipo di client HTTP e la fonte di ingresso influiscono su due importanti comportamenti di corrispondenza.

Voci del generatore confrontate con le impostazioni esterne

Quando si inseriscono caratteri jolly (*.example.como*) tramite i addNonProxyHost(String) metodi nonProxyHosts(Set) or del ProxyConfiguration generatore, i caratteri jolly funzionano solo con i client AWS CRT-based HTTP (AwsCrtHttpClienteAwsCrtAsyncHttpClient).

I client URLConnection basati su ApacheNetty,, e generano un carattere jolly PatternSyntaxException per le voci jolly fornite tramite il generatore.

Quando le voci provengono dalla proprietà di http.nonProxyHosts sistema o dalla variabile di NO_PROXY ambiente, i caratteri jolly funzionano con tutti i client.

Importante

Se hai bisogno di caratteri jolly per funzionare su tutti i client HTTP, usa la proprietà di http.nonProxyHosts sistema o la variabile di NO_PROXY ambiente invece del generatore.

Root-domain corrispondente per i caratteri jolly iniziali

I AWS CRT-based client e gli altri client HTTP gestiscono il *.example.com modello in modo diverso:

  • CRT-based client: *.example.com corrisponde sia al dominio principale (example.com) che ai sottodomini (ad esempio,api.example.com).

  • ApacheNetty, e client URLConnection basati: *.example.com corrisponde solo ai sottodomini. Il dominio principale example.com non corrisponde e l'SDK lo indirizza tramite il proxy.

Riepilogo del comportamento dei caratteri jolly per fonte di ingresso

La tabella seguente riassume il comportamento di corrispondenza quando si forniscono delle voci tramite la proprietà di http.nonProxyHosts sistema o la variabile di NO_PROXY ambiente. Tutti i client supportano le jolly provenienti da queste fonti.

Formato di immissione Non-CRT clienti (Apache,Netty, eURLConnection) CRT-based clienti

Host esatto (example.com)

Onorato

Onorato

Wildcard principale () *.example.com

Honored (solo sottodomini)

Onorato (dominio principale e sottodomini)

Wildcard nuda () *

Onorato

Onorato

Intervallo CIDR () 10.0.0.0/8

Onorato

Onorato