

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Konfigurasikan proxy HTTP
<a name="http-config-proxy-support"></a>

Anda dapat mengkonfigurasi proxy HTTP dengan menggunakan kode, dengan mengatur properti sistem Java, atau dengan mengatur variabel lingkungan.

## Konfigurasikan dalam kode
<a name="http-config-proxy-support-in-code"></a>

Anda mengonfigurasi proxy dalam kode dengan `ProxyConfiguration` pembuat khusus klien saat Anda membangun klien layanan. Kode berikut menunjukkan contoh konfigurasi proxy untuk klien HTTP berbasis Apache yang digunakan oleh klien layanan 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();
```

Bagian untuk setiap klien HTTP dalam topik ini menunjukkan contoh konfigurasi proxy.
+ [Apache HTTP klien](http-configuration-apache.md#http-configuration-apache-proxy-conf-ex)
+ [URLConnectionberbasis HTTP klien](http-configuration-url.md#http-configuration-url-proxy-conf-ex)
+ [Klien HTTP berbasis Netty](http-configuration-netty.md#http-config-netty-proxy-ex)
+ [AWS Klien HTTP berbasis CRT](http-configuration-crt.md#http-config-crt-proxy-ex)

## Konfigurasikan proxy HTTP dengan pengaturan eksternal
<a name="http-config-proxy-support-external"></a>

Bahkan jika Anda tidak secara eksplisit menggunakan `ProxyConfiguration` pembuat dalam kode, SDK mencari pengaturan eksternal untuk mengonfigurasi konfigurasi proxy default. 

Secara default, SDK pertama-tama mencari properti sistem JVM. Jika satu properti ditemukan, SDK menggunakan nilai dan nilai properti sistem lainnya. Jika tidak ada properti sistem yang tersedia, SDK mencari variabel lingkungan proxy.

SDK dapat menggunakan properti sistem Java berikut dan variabel lingkungan.


**Properti sistem Java**  

| Properti sistem | Deskripsi | Dukungan klien HTTP | 
| --- | --- | --- | 
| http.ProxyHost | Nama host dari server proxy HTTP | Semua | 
| http.Proxyport | Nomor port server proxy HTTP | Semua | 
| http.ProxyUser | Nama pengguna untuk otentikasi proxy HTTP | Semua | 
| http.ProxyPassword | Kata sandi untuk otentikasi proxy HTTP | Semua | 
| http. nonProxyHosts | Daftar host yang harus dijangkau secara langsung, melewati proxy. [Daftar ini juga valid ketika HTTPS digunakan](https://docs.oracle.com/javase/8/docs/technotes/guides/net/proxies.html). | Semua | 
| https.proxyhost | Nama host dari server proxy HTTPS | Netty, CRT | 
| https.proxyport | Nomor port server proxy HTTPS | Netty, CRT | 
| https.proxyuser | Nama pengguna untuk otentikasi proxy HTTPS | Netty, CRT | 
| https.proxyPassword | Kata sandi untuk otentikasi proxy HTTPS | Netty, CRT | 


**Variabel-variabel lingkungan**  

| Variabel lingkungan | Deskripsi | Dukungan klien HTTP | 
| --- | --- | --- | 
| HTTP\_PROXY 1 | URL yang valid dengan skema HTTP | Semua | 
| HTTPS\_PROXY 1 | URL yang valid dengan skema HTTPS | Netty, CRT | 
| TIDAK\_PROXY 2 | Daftar host yang harus dijangkau secara langsung, melewati proxy. Daftar ini valid untuk HTTP dan HTTPS. | Semua | 

### Lihat kunci dan catatan kaki
<a name="http-config-proxy-support-ext-key-footnote"></a>

**Semua** - Semua klien HTTP yang ditawarkan oleh SDK—`UrlConnectionHttpClient`,, `ApacheHttpClient``NettyNioAsyncHttpClient`,`AwsCrtAsyncHttpClient`.

**Netty** - Klien HTTP berbasis Netty (). `NettyNioAsyncHttpClient`

**CRT** - Klien HTTP AWS berbasis CRT, (`AwsCrtHttpClient`dan). `AwsCrtAsyncHttpClient`

1 Variabel lingkungan yang ditanyakan, apakah `HTTP_PROXY` atau`HTTPS_PROXY`, tergantung pada pengaturan skema di klien. `ProxyConfiguration` Skema default adalah HTTP. Cuplikan berikut menunjukkan cara mengubah skema ke HTTPS yang digunakan untuk resolusi variabel lingkungan.

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

2 Variabel `NO_PROXY` lingkungan mendukung campuran pemisah “\|” dan “,” antara nama host. Nama host mungkin termasuk wildcard “\*”.

## Gunakan kombinasi pengaturan
<a name="http-config-proxy-support-combo"></a>

Anda dapat menggunakan kombinasi pengaturan proxy HTTP dalam kode, properti sistem, dan variabel lingkungan. 

**Example — konfigurasi yang disediakan oleh properti sistem dan oleh kode**  

```
// 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();
```
SDK menyelesaikan pengaturan proxy berikut.  

```
Host = localhost
Port = 1234
Password = SYS_PROP_password
UserName = username
Non ProxyHost = null
```

**Example — properti sistem dan variabel lingkungan tersedia**  
Setiap `ProxyConfiguration` pembangun klien HTTP menawarkan pengaturan bernama `useSystemPropertyValues` dan`useEnvironmentVariablesValues`. Secara default, kedua pengaturan adalah`true`. Saat`true`, SDK secara otomatis menggunakan nilai dari properti sistem atau variabel lingkungan untuk opsi yang tidak disediakan oleh `ProxyConfiguration` pembuat.  
Properti sistem lebih diutamakan daripada variabel lingkungan. Jika properti sistem proxy HTTP ditemukan, SDK mengambil ***semua*** nilai dari properti sistem dan tidak ada dari variabel lingkungan. Jika Anda ingin memprioritaskan variabel lingkungan di atas properti sistem, setel `useSystemPropertyValues` ke. `false`
Untuk contoh ini, pengaturan berikut tersedia runtime:  

```
// 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"
```
Klien layanan dibuat dengan salah satu pernyataan berikut. Tak satu pun dari pernyataan secara eksplisit menetapkan pengaturan proxy.  

```
DynamoDbClient client = DynamoDbClient.create();
DynamoDbClient client = DynamoDbClient.builder().build();
DynamoDbClient client = DynamoDbClient.builder()
    .httpClient(ApacheHttpClient.builder()
        .proxyConfiguration(ProxyConfiguration.builder()
            .build())
        .build())
    .build();
```
Pengaturan proxy berikut diselesaikan oleh SDK:  

```
Host = SYS_PROP_HOST.com
Port = 2222
Password = SYS_PROP_PASSWORD
UserName = SYS_PROP_USER
Non ProxyHost = null
```
Karena klien layanan memiliki pengaturan proxy default, SDK mencari properti sistem dan kemudian variabel lingkungan. Karena pengaturan properti sistem lebih diutamakan daripada variabel lingkungan, SDK hanya menggunakan properti sistem.  
Jika penggunaan properti sistem diubah menjadi `false` seperti yang ditunjukkan dalam kode berikut, SDK hanya menyelesaikan variabel lingkungan.  

```
DynamoDbClient client = DynamoDbClient.builder()
    .httpClient(ApacheHttpClient.builder()
        .proxyConfiguration(ProxyConfiguration.builder()
            .useSystemPropertyValues(Boolean.FALSE)
            .build())
        .build())
    .build();
```
Pengaturan proxy yang diselesaikan menggunakan HTTP adalah:  

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