Saat menggunakan Alibaba Cloud Global Accelerator (GA) untuk mempercepat aplikasi Anda, Anda dapat mengaktifkan fitur pelestarian IP klien untuk mendapatkan alamat IP asal klien. Untuk pendengar Lapisan 7, gunakan bidang X-Forwarded-For di header permintaan HTTP untuk mendapatkan alamat IP asal klien. Untuk pendengar Lapisan 4, Anda dapat memperoleh alamat IP asal secara otomatis atau menggunakan Proxy Protocol, tergantung pada jenis layanan backend.
Hanya pendengar perutean pintar yang mendukung pelestarian IP klien. Pendengar perutean kustom tidak mendukung fitur ini secara default. Untuk mengaktifkan pelestarian IP klien untuk pendengar perutean kustom, hubungi manajer akun Anda.
Pendengar HTTP atau HTTPS
Metode
Gunakan fitur Preserve Client IP, yang diaktifkan secara default.
GA menyimpan alamat IP asal klien di bidang X-Forwarded-For dari header permintaan HTTP. Setelah mengonfigurasi server backend, server tersebut dapat mengambil alamat ini. Alamat IP pertama di bidang tersebut adalah alamat IP asal klien.
X-Forwarded-For: <Alamat IP asal klien, Alamat IP server proxy 1, Alamat IP server proxy 2, ...>Prosedur
Topik ini menggunakan server backend yang menjalankan Alibaba Cloud Linux 3 dan Nginx 1.20.1 sebagai contoh. Konfigurasi mungkin berbeda tergantung pada lingkungan Anda.
Jalankan perintah
nginx -V | grep http_realip_moduledi server NGINX untuk memeriksa apakah modul http_realip_module terinstal. Server NGINX menggunakan modul ini untuk mengurai nilai X-Forwarded-For.Jika
--with-http_realip_moduletermasuk dalam keluaran, itu menunjukkan bahwa http_realip_module terinstal dan Anda dapat melanjutkan ke langkah berikutnya.CatatanNGINX 1.0.4, yang dirilis pada tahun 2011, dan versi setelahnya mendukung modul http_realip_module. Jika versi NGINX Anda lebih lama dari 1.0.4, kami sarankan mencadangkan data dan meningkatkan ke versi yang lebih baru.
Jika modul http_realip_module tidak terinstal di server NGINX, kompilasi ulang dan instal NGINX dengan modul ini. Kami sarankan menggunakan manajer paket seperti YUM untuk menginstal dan mengelola NGINX. Manajer paket menyederhanakan proses ini.
Ubah dan simpan file konfigurasi NGINX. Blok kode berikut menunjukkan sebuah contoh. Jalankan perintah
nginx -tuntuk menanyakan jalur file konfigurasi, yang secara default adalah/etc/nginx/nginx.conf. Jalur tersebut mungkin bervariasi berdasarkan lingkungan yang digunakan.http { # Tetapkan variabel $http_x_forwarded_for, yang digunakan untuk merekam nilai X-Forwarded-For. log_format main '$remote_addr- $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; # ... }Jalankan perintah
sudo nginx -s reloaduntuk memuat ulang file konfigurasi NGINX.Dapatkan alamat IP asal klien.
Periksa log Nginx untuk memverifikasi bahwa alamat IP asal klien diperoleh.
Jalankan perintah
tail -n <Jumlah entri log untuk dikembalikan> <Jalur log>. Di keluaran log, lihat bidang yang sesuai dengan variabel$http_x_forwarded_for. Alamat IP pertama adalah alamat IP asal klien.Dalam topik ini, jalur default file log Nginx digunakan:
/var/log/nginx/access.log.
CatatanJika Anda mengaktifkan pemeriksaan kesehatan untuk Global Accelerator, Anda mungkin perlu melihat beberapa entri log atau sementara waktu meningkatkan interval pemeriksaan kesehatan. Ini mencegah log pemeriksaan kesehatan menimpa entri log yang berisi alamat IP asal klien.
Pendengar TCP
Metode
Aktifkan fitur Preserve Client IP. Kemudian, pilih metode untuk mendapatkan alamat IP asal klien.
Metode yang didukung bervariasi tergantung pada jenis layanan backend.
Mengambil Otomatis IP Klien: Alamat IP asal klien diteruskan langsung ke server backend.
Proxy Protocol: Server backend harus mendukung Proxy Protocol untuk mendapatkan alamat IP asal klien.
PentingProxy Protocol hanya bekerja jika baik server proxy maupun server backend mendukungnya. Jika server backend tidak dapat mengurai header Proxy Protocol, mengaktifkan fitur ini dapat menyebabkan kesalahan penguraian dan memengaruhi ketersediaan layanan.
GA pendengar mendukung Proxy Protocol untuk meneruskan informasi koneksi asli, seperti IP sumber, IP tujuan, port sumber, dan port tujuan. Informasi ini ditambahkan ke header data TCP tanpa membuang atau menimpa data yang ada.
GA hanya mendukung Proxy Protocol v1. Proxy Protocol v1 hanya mendukung protokol TCP. Untuk informasi lebih lanjut, lihat The PROXY protocol.
Layanan backend yang ditempatkan di Alibaba Cloud
Jenis layanan backend | Dukungan pelestarian IP klien | Metode | |
ECS | Didukung. Instance ECS harus berada di virtual private cloud (VPC). Grup keamanan instance ECS harus mengizinkan lalu lintas dari semua alamat IP sumber klien. |
| |
ALB | Tidak didukung. | Tidak berlaku | |
NLB | Didukung. |
| |
CLB | Didukung. Grup keamanan server backend CLB harus mengizinkan lalu lintas dari semua alamat IP sumber klien. Catat bahwa dalam skenario berikut, server backend tidak dapat mendapatkan alamat IP asal klien:
|
| |
OSS | Tidak didukung. | Tidak berlaku | |
ENI | Didukung. Grup keamanan ENI harus mengizinkan lalu lintas dari semua alamat IP sumber klien. |
| |
Custom Private IP | Didukung. | Proxy Protocol | |
Alibaba Cloud Public IP Address Peringatan Jika titik akhir adalah alamat IP publik Alibaba Cloud dan alamat IP publik dilepaskan dari instance aslinya dan dilampirkan ke instance lain, pelestarian IP klien mungkin gagal dan lalu lintas mungkin terputus. Untuk memulihkan fitur pelestarian IP klien untuk titik akhir, Anda dapat menghapus dan membuat ulang titik akhir, atau hubungi manajer akun Anda untuk bantuan. | Dilampirkan ke instance ECS tipe VPC | Didukung. |
|
Dilampirkan ke instance NLB | Didukung. |
| |
Dilampirkan ke instance ALB | Tidak didukung. | Tidak berlaku | |
Dilampirkan ke instance CLB pribadi | Didukung. |
| |
Dilampirkan ke ENI | Didukung. |
| |
Dilampirkan ke instance gateway NAT publik | Didukung. | Proxy Protocol | |
Layanan backend yang ditempatkan di luar Alibaba Cloud
Jenis layanan backend | Dukungan pelestarian IP klien | Metode |
Custom Public IP | Didukung. | Proxy Protocol |
Custom Domain Name | Didukung. |
Jika klien menggunakan alamat IP yang dipercepat IPv6 untuk mengakses GA, atau jika GA berkomunikasi dengan backend melalui IPv6, Anda harus menggunakan Proxy Protocol untuk mendapatkan alamat IP asal klien.
Prosedur
Topik ini menggunakan server backend yang menjalankan Alibaba Cloud Linux 3 dan Nginx 1.20.1 sebagai contoh. Konfigurasi mungkin berbeda tergantung pada lingkungan Anda.
Otomatis
Aktifkan pelestarian IP klien.
Masuk ke Konsol Global Accelerator.
Di halaman Instances, temukan instansiasi Global Accelerator target, dan klik Configure Listener di kolom Actions.
Di tab Listeners, temukan pendengar TCP target, dan klik Mod Lsnr di kolom Actions.
Di langkah Configure Listener & Protocol, klik Next.
Di langkah Configure Endpoint Group, pilih Preserve dari daftar Preserve Client IP dan klik Next.
Jika layanan backend ditempatkan di Alibaba Cloud, Method To Obtain Client's Originating IP diatur ke Automatically Retrieve Client IP secara default.

Di langkah Configuration Review, konfirmasi konfigurasi dan klik Submit.
Lihat file konfigurasi layanan Nginx.
Anda dapat menjalankan perintah
nginx -tuntuk melihat jalur file konfigurasi. Secara default, jalurnya adalah/etc/nginx/nginx.conf. Jalur sebenarnya mungkin berbeda tergantung pada lingkungan Anda.CatatanJika layanan backend perlu memproses hanya lalu lintas HTTP dan HTTPS, pastikan server Nginx mendukung modul
http{}. Jika layanan backend juga perlu memproses lalu lintas TCP, pastikan server Nginx mendukung modulstream{}.Modul
stream{}ditambahkan di NGINX 1.9.0 dan seterusnya. Namun, modul ini tidak diinstal secara default. Anda harus mengkompilasi dan menginstal modulstream{}.# Proses lalu lintas HTTP http { # Konfigurasi default log_format main '$remote_addr- $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; # Gunakan port pendengar 80 sebagai contoh server { listen 80; #... } } # Proses lalu lintas TCP (tambahkan sesuai kebutuhan) stream { log_format main_stream '$remote_addr - [$time_local] ' '"$protocol" $status $bytes_sent $bytes_received ' '"$session_time"'; access_log /var/log/nginx/stream_access.log main_stream; # Gunakan port pendengar 4000 sebagai contoh server { listen 4000; #... } }Dapatkan alamat IP asal klien.
Metode 1: Periksa log Nginx untuk memverifikasi bahwa alamat IP asal klien diperoleh.
Jalankan perintah
tail -n <Jumlah entri log untuk dikembalikan> <Jalur log>. Di keluaran log, periksa alamat IP pertama (bidang yang sesuai dengan variabel$remote_addr). Ini adalah alamat IP asal klien.Untuk lalu lintas HTTP:
Dalam skenario ini, jalur file log adalah
/var/log/nginx/access.log.
Untuk lalu lintas TCP:
Dalam skenario ini, jalur file log adalah
/var/log/nginx/stream_access.log.
Metode 2: Tangkap paket untuk memverifikasi bahwa alamat IP asal klien diperoleh.
Jalankan perintah
tcpdump tcp port [Port pendengar] -n -X -s 0untuk melihat alamat IP asal klien dalam paket yang ditangkap.
Gunakan Proxy Protocol
Aktifkan pelestarian IP klien.
Masuk ke Konsol Global Accelerator.
Di halaman Instances, temukan instansiasi Global Accelerator target, dan klik Configure Listener di kolom Actions.
Di tab Listeners, temukan pendengar TCP target, dan klik Mod Lsnr di kolom Actions.
Di langkah Configure Listener & Protocol, klik Next.
Di langkah Configure Endpoint Group, pilih Preserve dari tab Preserve Client IP dan klik Next.
Jika layanan backend ditempatkan di luar Alibaba Cloud, Method To Obtain Client's Originating IP diatur ke ProxyProtocol secara default.

Di langkah Configuration Review, konfirmasi konfigurasi dan klik Submit.
Ubah dan simpan file konfigurasi layanan Nginx.
Anda dapat menjalankan perintah
nginx -tuntuk melihat jalur file konfigurasi. Secara default, jalurnya adalah/etc/nginx/nginx.conf. Jalur sebenarnya mungkin berbeda tergantung pada lingkungan Anda.CatatanJika layanan backend perlu memproses hanya lalu lintas HTTP dan HTTPS, pastikan server Nginx mendukung modul
http{}. Jika layanan backend juga perlu memproses lalu lintas TCP, pastikan server Nginx mendukung modulstream{}.Modul
stream{}ditambahkan di NGINX 1.9.0 dan seterusnya. Namun, modul ini tidak diinstal secara default. Anda harus mengkompilasi dan menginstal modulstream{}.# Proses lalu lintas HTTP http { # Pastikan menambahkan variabel $proxy_protocol_addr, yang menyimpan alamat IP asal klien, ke format log modul http{}. log_format main '$proxy_protocol_addr - $remote_addr- $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; # Gunakan port pendengar 80 sebagai contoh dan aktifkan penguraian untuk proxy_protocol. server { listen 80 proxy_protocol; #... } } # Proses lalu lintas TCP (tambahkan sesuai kebutuhan) stream { # Pastikan menambahkan variabel $proxy_protocol_addr, yang menyimpan alamat IP asal klien, ke format log modul stream{}. log_format main_stream '$proxy_protocol_addr - $remote_addr - $protocol [$time_local] ' '$status $bytes_sent $bytes_received $session_time'; access_log /var/log/nginx/stream_access.log main_stream; # Gunakan port pendengar 12345 sebagai contoh dan aktifkan penguraian untuk proxy_protocol. server { listen 12345 proxy_protocol; #... } }Jalankan perintah
sudo nginx -s reloaduntuk memuat ulang file konfigurasi Nginx.Dapatkan alamat IP asal klien.
Periksa log Nginx untuk memverifikasi bahwa alamat IP asal klien diperoleh.
Jalankan perintah
tail -n <Jumlah entri log untuk dikembalikan> <Jalur log>. Di keluaran log, periksa alamat IP yang sesuai dengan variabel$proxy_protocol_addr. Ini adalah alamat IP asal klien.Untuk lalu lintas HTTP:
Dalam skenario ini, jalur file log adalah
/var/log/nginx/access.log.
Untuk lalu lintas TCP:
Dalam skenario ini, jalur file log adalah
/var/log/nginx/stream_access.log.
Pendengar UDP
Metode
Gunakan fitur Preserve Client IP. Setelah Anda mengaktifkan fitur ini, hanya metode Automatically Retrieve Client IP yang didukung secara default. GA meneruskan alamat IP asal klien langsung ke server backend.
Batasan berikut berlaku saat Anda mengaktifkan Preserve Client IP untuk pendengar UDP:
Fitur ini hanya didukung untuk instansiasi GA bayar sesuai penggunaan.
Jika instansiasi GA bayar sesuai penggunaan Anda tidak mendukung Preserve Client Source IP untuk pendengar UDP, instans tersebut mungkin merupakan versi lama. Hubungi manajer akun Anda untuk meningkatkan instans GA Anda.
Backend Service Type hanya bisa ECS, ENI, atau NLB. Untuk layanan backend jenis NLB, fitur Client IP Preservation tidak diaktifkan secara default. Untuk menggunakan fitur ini, hubungi manajer akun Anda.
Hanya server backend IPv4 yang dapat memperoleh alamat IP asal klien IPv4, dan hanya server backend IPv6 yang dapat memperoleh alamat IP asal klien IPv6.
Prosedur
Topik ini menggunakan server backend yang menjalankan Alibaba Cloud Linux 3 dan Nginx 1.20.1 sebagai contoh. Konfigurasi mungkin berbeda tergantung pada lingkungan Anda.
Aktifkan pelestarian IP klien.
Masuk ke Konsol Global Accelerator.
Di halaman Instances, temukan instansiasi Global Accelerator target, dan klik Configure Listener di kolom Actions.
Di tab Listeners, temukan pendengar UDP target, dan klik Mod Lsnr di kolom Actions.
Di langkah Configure Listener & Protocol, klik Next.
Di langkah Configure Endpoint Group, pilih Preserve dari tab Preserve Client IP dan klik Next.
Dalam kasus ini, Method To Obtain Client's Originating IP diatur ke Automatically Retrieve Client IP secara default.

Di langkah Configuration Review, konfirmasi konfigurasi dan klik Submit.
Lihat file konfigurasi layanan Nginx.
Anda dapat menjalankan perintah
nginx -tuntuk melihat jalur file konfigurasi. Secara default, jalurnya adalah/etc/nginx/nginx.conf. Jalur sebenarnya mungkin berbeda tergantung pada lingkungan Anda.CatatanUntuk memproses lalu lintas UDP, server Nginx pada layanan backend harus mendukung modul
stream{}.Modul
stream{}ditambahkan di NGINX 1.9.0 dan seterusnya. Namun, modul ini tidak diinstal secara default. Anda harus mengkompilasi dan menginstal modulstream{}.#... # Proses lalu lintas UDP (pastikan untuk menyertakan modul ini) stream { log_format main_stream '$remote_addr - [$time_local] ' '"$protocol" $status $bytes_sent $bytes_received ' '"$session_time"'; access_log /var/log/nginx/stream_access.log main_stream; # Gunakan port pendengar UDP 4000 sebagai contoh server { listen 4000 udp; #... } }Dapatkan alamat IP asal klien.
Metode 1: Periksa log Nginx untuk memverifikasi bahwa alamat IP asal klien diperoleh.
Jalankan perintah
tail -n <Jumlah entri log untuk dikembalikan> <Jalur log>. Di keluaran log, periksa alamat IP pertama (bidang yang sesuai dengan variabel$remote_addr). Ini adalah alamat IP asal klien.Dalam skenario ini, jalur file log adalah
/var/log/nginx/stream_access.log.
Metode 2: Tangkap paket untuk memverifikasi bahwa alamat IP asal klien diperoleh.
Jalankan perintah
tcpdump udp port [Port pendengar] -n -X -s 0untuk melihat alamat IP asal klien dalam paket yang ditangkap.
Tanya Jawab Umum
Mengapa fitur pelestarian IP klien tidak bekerja setelah diaktifkan?
Jika Anda menggunakan pendengar HTTP atau HTTPS dan server backend tidak dapat mencatat atau memproses header
X-Forwarded-For, pelestarian alamat IP klien tidak akan berfungsi.Jika Anda menggunakan pendengar TCP:
Jika layanan backend ditempatkan di Alibaba Cloud tetapi server backend tidak ditempatkan di virtual private cloud (VPC) atau alamat IP elastis (EIP) tidak terkait dengan instance tipe VPC, server backend tidak dapat melestarikan alamat IP klien.
Jika layanan backend ditempatkan di luar Alibaba Cloud, server backend harus mendukung Proxy Protocol agar mereka dapat melestarikan alamat IP klien.
Ini karena GA menggunakan Proxy Protocol untuk melestarikan alamat IP klien setelah Anda mengaktifkan pelestarian alamat IP klien. Oleh karena itu, Anda harus memastikan bahwa server backend mendukung Proxy Protocol. Jika tidak, server backend tidak dapat mengurai header Proxy Protocol.
Jika klien menggunakan alamat IPv6 untuk mengakses layanan backend IPv4, server backend harus mendukung Proxy Protocol. Jika tidak, server backend tidak dapat melestarikan alamat IP klien.
Jika Anda menggunakan pendengar UDP dan klien menggunakan alamat IPv6 untuk mengakses layanan backend IPv4, pelestarian alamat IP klien tidak akan berfungsi.
Bagaimana cara menonaktifkan pelestarian alamat IP klien?
Untuk pendengar HTTP dan HTTPS, pelestarian alamat IP klien diaktifkan secara otomatis dan tidak dapat dinonaktifkan.
Untuk pendengar TCP dan UDP, Anda dapat menonaktifkan pelestarian alamat IP klien di konsol GA. Lakukan langkah-langkah berikut:
Di halaman Instances, temukan instans GA yang ingin Anda kelola dan klik Configure Listeners di kolom Actions.
Di tab Listeners, temukan pendengar yang ingin Anda kelola dan klik Mod Lsnr di kolom Actions.
Di langkah Configure Listener & Protocol, klik Next.
Di langkah Configure Endpoint Group, atur Preserve Client IP ke Do Not Preserve dan klik Next.
Di langkah Configuration Review, konfirmasi informasi dan klik Submit.
Bagaimana cara mendapatkan alamat IP asal klien ketika GA menangani lalu lintas dari klien IPv6 ke layanan IPv4?
Pendengar HTTP dan HTTPS mendapatkan alamat IP klien IPv6 dan IPv4 menggunakan header HTTP
X-Forwarded-For.Pendengar TCP mendapatkan alamat IP klien IPv6 menggunakan Proxy Protocol. Metode ini memerlukan agar server backend mendukung Proxy Protocol. Jika tidak, akses mungkin gagal.
Pendengar UDP tidak dapat mendapatkan alamat IP klien IPv6.
Referensi
Operasi Konsol
Anda juga dapat menggunakan fitur log akses GA untuk mendapatkan alamat IP asal klien. Buat log akses untuk kelompok titik akhir target. Log akses yang dikumpulkan dikirim ke Logstore di Simple Log Service (SLS) di wilayah tempat kelompok titik akhir ditempatkan. Di tab Raw Logs Logstore, Anda dapat melihat alamat IP asal klien di bidang client_ip log permintaan akses.
Untuk informasi lebih lanjut tentang konfigurasi dan catatan untuk layanan backend kelompok titik akhir, lihat Kelompok titik akhir dan titik akhir dan Tambah dan kelola kelompok titik akhir untuk pendengar perutean pintar.
Referensi API
Saat Anda memanggil operasi API berikut, Anda dapat menggunakan parameter EnableClientIPPreservation (untuk metode otomatis) dan parameter EnableProxyProtocol (untuk metode Proxy Protocol) untuk mengonfigurasi cara mendapatkan alamat IP asal klien.
CreateEndpointGroup - Membuat kelompok titik akhir.
UpdateEndpointGroup - Memodifikasi konfigurasi kelompok titik akhir.