Header HTTP dan Application Load Balancer - Elastic Load Balancing

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

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. 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 di Panduan Pengguna Elastic Load Balancing.

X-Diteruskan-Untuk

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 adalahappend,preserve, danremove. Nilai default untuk atribut ini adalahappend.

penting

X-Forwarded-ForHeader 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.

Menambahkan

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 alamat2001: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 keclient-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 port8080.

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 port8080.

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

Pertahankan

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

Menghapus

removeMode 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 satuappend, preserve atau remove mode. Dalam contoh ini, alamat IP dari hop terakhir adalah127.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 EC2 konsol Amazon di https://console.aws.amazon.com/ec2/.

  2. Pada panel navigasi, pilih Load Balancers.

  3. Pilih penyeimbang beban.

  4. Pada tab Atribut, pilih Edit.

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

  6. Pilih Simpan perubahan.

AWS CLI
Untuk mengelola X-Forwarded-For header

Gunakan modify-load-balancer-attributesperintah 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::LoadBalancersumber 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

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

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