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 | 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 |
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 |
| 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.comcorrisponde sia al dominio principale (example.com) che ai sottodomini (ad esempio,api.example.com). -
ApacheNetty, e client URLConnection basati:
*.example.comcorrisponde solo ai sottodomini. Il dominio principaleexample.comnon 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 ( |
Onorato |
Onorato |
|
Wildcard principale () |
Honored (solo sottodomini) |
Onorato (dominio principale e sottodomini) |
|
Wildcard nuda () |
Onorato |
Onorato |
|
Intervallo CIDR () |
Onorato |
Onorato |