

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

# Header HTTP dan Application Load Balancer
<a name="x-forwarded-headers"></a>

Permintaan HTTP dan respons HTTP menggunakan bidang header untuk mengirim informasi tentang pesan HTTP. Header HTTP ditambahkan secara otomatis. Bidang header adalah pasangan nama-nilai yang dipisahkan titik dua yang dipisahkan oleh carriage return (CR) dan line feed (LF). Satu set standar bidang header HTTP didefinisikan dalam RFC 2616, [Header Pesan](https://datatracker.ietf.org/doc/html/rfc2616). Ada juga header HTTP non-standar yang tersedia secara otomatis ditambahkan dan digunakan secara luas oleh aplikasi. Beberapa header HTTP non-standar memiliki awalan `X-Forwarded`. Application Load Balancer mendukung header `X-Forwarded` berikut.

Untuk informasi lebih lanjut tentang koneksi HTTP, lihat [Permintaan perutean](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html#request-routing) di *Panduan Pengguna Elastic Load Balancing*.

**Topics**
+ [X-Diteruskan-Untuk](#x-forwarded-for)
+ [X-Diteruskan-Proto](#x-forwarded-proto)
+ [Port-X-Diteruskan](#x-forwarded-port)

## X-Diteruskan-Untuk
<a name="x-forwarded-for"></a>

Header `X-Forwarded-For` permintaan membantu Anda mengidentifikasi alamat IP klien saat Anda menggunakan penyeimbang beban HTTP atau HTTPS. Karena penyeimbang beban mencegat lalu lintas antara klien dan server, log akses server Anda hanya berisi alamat IP penyeimbang beban. Untuk melihat alamat IP klien, gunakan `routing.http.xff_header_processing.mode` atribut. Atribut ini memungkinkan Anda untuk memodifikasi, mempertahankan, atau menghapus `X-Forwarded-For` header dalam permintaan HTTP sebelum Application Load Balancer mengirimkan permintaan ke target. Nilai yang mungkin untuk atribut ini adalah`append`,`preserve`, dan`remove`. Nilai default untuk atribut ini adalah`append`.

**penting**  
`X-Forwarded-For`Header harus digunakan dengan hati-hati karena potensi risiko keamanan. Entri hanya dapat dianggap dapat dipercaya jika ditambahkan oleh sistem yang diamankan dengan benar dalam jaringan.

**Topics**
+ [Menambahkan](#x-forwarded-for-append)
+ [Pertahankan](#x-forwarded-for-preserve)
+ [Menghapus](#x-forwarded-for-remove)

### Menambahkan
<a name="x-forwarded-for-append"></a>

Secara default, Application Load Balancer menyimpan alamat IP klien di header `X-Forwarded-For` permintaan dan meneruskan header ke server Anda. Jika header `X-Forwarded-For` permintaan tidak disertakan dalam permintaan asli, penyeimbang beban membuat satu dengan alamat IP klien sebagai nilai permintaan. Jika tidak, penyeimbang beban menambahkan alamat IP klien ke header yang ada dan kemudian meneruskan header ke server Anda. Header permintaan `X-Forwarded-For` mungkin berisi beberapa alamat IP yang dipisahkan koma.

Header permintaan `X-Forwarded-For` memiliki bentuk berikut:

```
X-Forwarded-For: client-ip-address
```

Berikut adalah contoh header permintaan `X-Forwarded-For` untuk klien dengan alamat IP `203.0.113.7`.

```
X-Forwarded-For: 203.0.113.7
```

Berikut ini adalah contoh header `X-Forwarded-For` permintaan untuk klien dengan IPv6 alamat`2001:DB8::21f:5bff:febf:ce22:8a2e`.

```
X-Forwarded-For: 2001:DB8::21f:5bff:febf:ce22:8a2e
```

Ketika atribut pelestarian port klien (`routing.http.xff_client_port.enabled`) diaktifkan pada penyeimbang beban, header `X-Forwarded-For` permintaan menyertakan yang `client-port-number` ditambahkan ke`client-ip-address`, dipisahkan oleh titik dua. Header kemudian mengambil bentuk berikut:

```
IPv4 -- X-Forwarded-For: client-ip-address:client-port-number
```

```
IPv6 -- X-Forwarded-For: [client-ip-address]:client-port-number
```

Untuk IPv6, perhatikan bahwa ketika penyeimbang beban menambahkan `client-ip-address` ke header yang ada, itu melampirkan alamat dalam tanda kurung siku.

Berikut ini adalah contoh header `X-Forwarded-For` permintaan untuk klien dengan IPv4 alamat `12.34.56.78` dan nomor port`8080`.

```
X-Forwarded-For: 12.34.56.78:8080
```

Berikut ini adalah contoh header `X-Forwarded-For` permintaan untuk klien dengan IPv6 alamat `2001:db8:85a3:8d3:1319:8a2e:370:7348` dan nomor port`8080`.

```
X-Forwarded-For: [2001:db8:85a3:8d3:1319:8a2e:370:7348]:8080
```

### Pertahankan
<a name="x-forwarded-for-preserve"></a>

`preserve`Mode dalam atribut memastikan bahwa `X-Forwarded-For` header dalam permintaan HTTP tidak dimodifikasi dengan cara apa pun sebelum dikirim ke target.

### Menghapus
<a name="x-forwarded-for-remove"></a>

`remove`Mode dalam atribut menghapus `X-Forwarded-For` header dalam permintaan HTTP sebelum dikirim ke target.

Jika Anda mengaktifkan atribut pelestarian port klien (`routing.http.xff_client_port.enabled`), dan juga memilih `preserve` atau `remove` untuk `routing.http.xff_header_processing.mode` atribut, Application Load Balancer akan mengganti atribut pelestarian port klien. Itu membuat `X-Forwarded-For` header tidak berubah, atau menghapusnya tergantung pada mode yang Anda pilih, sebelum mengirimkannya ke target.

Tabel berikut menunjukkan contoh `X-Forwarded-For` header yang diterima target ketika Anda memilih salah satu`append`, `preserve` atau `remove` mode. Dalam contoh ini, alamat IP dari hop terakhir adalah`127.0.0.1`. 


| Minta deskripsi | Contoh permintaan | append | preserve | remove | 
| --- | --- | --- | --- | --- | 
| Permintaan dikirim tanpa header XFF | GET /index.html HTTP/1.1 Host: example.com | X-Forwarded-For: 127.0.0.1 | Tidak hadir | Tidak hadir | 
| Permintaan dikirim dengan header XFF dan alamat IP klien. | GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For: 127.0.0.4 | X-Forwarded-For: 127.0.0.4, 127.0.0.1 | X-Forwarded-For: 127.0.0.4 | Tidak hadir | 
| Permintaan dikirim dengan header XFF dengan beberapa alamat IP klien. | GET /index.html HTTP/1.1 Host: example.com X-Forwarded-For: 127.0.0.4, 127.0.0.8 | X-Forwarded-For: 127.0.0.4, 127.0.0.8, 127.0.0.1 | X-Forwarded-For: 127.0.0.4, 127.0.0.8 | Tidak hadir | 

------
#### [ Console ]

**Untuk mengelola X-Forwarded-For header**

1. Buka konsol Amazon EC2 di. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Pada panel navigasi, pilih **Load Balancers**.

1. Pilih penyeimbang beban.

1. Pada tab **Atribut**, pilih **Edit**.

1. **Di bagian **Traffic configuration**, di bawah **Packet handling**, untuk **X-Forwarded-For header**, pilih **Append** (default), **Preserve**, or Remove.**

1. Pilih **Simpan perubahan**.

------
#### [ AWS CLI ]

**Untuk mengelola X-Forwarded-For header**  
Gunakan [modify-load-balancer-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-load-balancer-attributes.html)perintah dengan `routing.http.xff_header_processing.mode` atribut. Nilai yang mungkin adalah `append`, `preserve`, dan `remove`. Nilai default-nya `append`.

```
aws elbv2 modify-load-balancer-attributes \
    --load-balancer-arn load-balancer-arn \
    --attributes "Key=routing.http.xff_header_processing.mode,Value=preserve"
```

------
#### [ CloudFormation ]

**Untuk mengelola X-Forwarded-For header**  
Perbarui [AWS::ElasticLoadBalancingV2::LoadBalancer](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-loadbalancer.html)sumber daya untuk menyertakan `routing.http.xff_header_processing.mode` atribut. Nilai yang mungkin adalah `append`, `preserve`, dan `remove`. Nilai default-nya `append`.

```
Resources:
  myLoadBalancer:
    Type: AWS::ElasticLoadBalancingV2::LoadBalancer
    Properties:
      Name: my-alb
      Type: application
      Scheme: internal
      Subnets: 
        - !Ref subnet-AZ1
        - !Ref subnet-AZ2
      SecurityGroups: 
        - !Ref mySecurityGroup
      LoadBalancerAttributes: 
        - Key: "routing.http.xff_header_processing.mode"
          Value: "preserve"
```

------

## X-Diteruskan-Proto
<a name="x-forwarded-proto"></a>

Header permintaan `X-Forwarded-Proto` membantu Anda mengidentifikasi protokol (HTTP atau HTTPS) yang digunakan klien untuk terhubung ke penyeimbang beban Anda. Log akses server Anda hanya berisi protokol yang digunakan antara server dan penyeimbang beban; mereka tidak berisi informasi tentang protokol yang digunakan antara klien dan penyeimbang beban. Untuk menentukan protokol yang digunakan antara klien dan penyeimbang beban, gunakan header permintaan `X-Forwarded-Proto`. Elastic Load Balancing menyimpan protokol yang digunakan antara klien dan penyeimbang beban di header permintaan `X-Forwarded-Proto` dan meneruskan headerdan meneruskan tajuk ke server Anda ke server Anda.

Aplikasi atau situs web Anda dapat menggunakan protokol yang tersimpan di header permintaan `X-Forwarded-Proto` untuk membuat respons yang mengarahkan ke URL yang sesuai.

Header permintaan `X-Forwarded-Proto` mengambil bentuk berikut:

```
X-Forwarded-Proto: originatingProtocol
```

Contoh berikut berisi header permintaan `X-Forwarded-Proto` untuk permintaan yang berasal dari klien sebagai permintaan HTTPS:

```
X-Forwarded-Proto: https
```

## Port-X-Diteruskan
<a name="x-forwarded-port"></a>

Header permintaan `X-Forwarded-Port` membantu Anda mengidentifikasi port tujuan yang digunakan klien untuk menyambung ke penyeimbang beban.