Topik ini menjawab beberapa pertanyaan umum terkait Cloud-native API Gateway.
Apakah Cloud-native API Gateway mendukung IPv6?
Ya, Cloud-native API Gateway mendukung IPv6.
Apakah Cloud-native API Gateway mendukung header permintaan x-forwarded-for?
Ya, Cloud-native API Gateway mendukung header permintaan x-forwarded-for.
Jika permintaan asli membawa header x-forwarded-for, gateway akan menambahkan alamat hop sebelumnya ke header tersebut. Jika permintaan asli tidak membawa header x-forwarded-for, gateway akan menambahkan header tersebut dan menulis alamat hop sebelumnya.
Secara default, Tomcat bawaan dari Spring Boot menghapus alamat terakhir di header x-forwarded-for. Anda dapat menggunakan Spring Boot untuk menambahkan konfigurasi server.forward-headers-strategy=none guna mencegah penghapusan ini.
Apa yang harus saya lakukan jika "upstream connect error or disconnect/reset header" dilaporkan ketika instance Cloud-native API Gateway saya meneruskan permintaan?
Masalah ini terjadi karena grup keamanan layanan backend tidak mengizinkan instance gateway mengakses port layanan.
Anda dapat memperbaiki masalah ini dengan menambahkan aturan grup keamanan yang mengizinkan instance gateway meneruskan permintaan ke pod Container Service for Kubernetes (ACK) yang sesuai. Untuk menambahkan aturan grup keamanan, buka halaman Overview instance Anda, klik tab Security Group Authorization, lalu klik Add Security Group Rule. Pastikan untuk membuka port yang diperlukan oleh pod dalam aturan grup keamanan.
Bagaimana cara menggunakan header untuk mencocokkan nama domain saya?
Anda dapat menambahkan aturan pencocokan header saat membuat rute.
Saat mengonfigurasi aturan, atur bidang nama header menjadi authority dan nilai header menjadi nama domain yang ingin dicocokkan.
Apa yang harus saya lakukan jika kesalahan yang menunjukkan badan permintaan terlalu besar dilaporkan?
Masalah ini terjadi karena ukuran buffer koneksi gateway terlalu kecil. Anda dapat menyelesaikan masalah ini dengan meningkatkan ukuran buffer:
Jika protokolnya adalah HTTP 1.x, tingkatkan nilai parameter
DownstreamConnectionBufferLimitsdi konsol.Jika protokolnya adalah HTTP 2.0, tingkatkan nilai parameter
DownstreamConnectionBufferLimitsdanInitialStreamWindowSizedi konsol.
Berapa banyak sumber yang dapat saya gunakan untuk membuat layanan di Cloud-native API Gateway?
Sebuah instance gateway tunggal dapat dikaitkan dengan hingga tiga kluster ACK.
Sebuah instance gateway tunggal hanya dapat dikaitkan dengan satu instance Nacos.
Mengapa saya tidak dapat memilih instance Nacos atau kluster ACK yang ada sebagai sumber untuk membuat layanan?
Hanya instance Nacos atau kluster ACK dari virtual private cloud (VPC) yang sama dengan instance gateway Anda yang dapat dipilih sebagai sumber layanan.
Apakah Cloud-native API Gateway mendukung sertifikat HTTPS yang saya siapkan sendiri?
Cloud-native API Gateway tidak menyimpan sertifikat. Sebagai gantinya, ia menarik sertifikat dari Alibaba Cloud Certificate Management Service. Anda dapat mengunggah sertifikat Anda ke Certificate Management Service dan mengonfigurasikannya dalam pengaturan nama domain instance gateway Anda.
Bagaimana perubahan parameter di konsol memengaruhi bisnis saya yang sudah ada?
Perubahan XffTrustedNum berlaku setelah Anda memulai ulang instance gateway.
Perubahan UpstreamIdleTimeout menyebabkan koneksi upstream terputus dan kemudian tersambung kembali.
Perubahan DownstreamIdleTime menyebabkan koneksi downstream terputus dan kemudian tersambung kembali.
Apa yang harus saya lakukan jika status kesehatan layanan backend yang saya buat tidak normal?
Untuk memungkinkan instance gateway meneruskan permintaan ke layanan backend, pastikan bahwa instance gateway terhubung ke layanan backend. Jika status kesehatan layanan backend tidak normal, lakukan langkah berikut untuk mendiagnosis masalah:
Untuk layanan internal-facing di VPC, periksa apakah grup keamanan layanan backend mengizinkan instance gateway mengakses port yang relevan. Untuk informasi lebih lanjut tentang cara mengonfigurasi aturan grup keamanan, lihat Konfigurasikan aturan grup keamanan.
Untuk layanan Internet-facing, periksa apakah VPC Anda dapat mengakses Internet. Coba aktifkan fitur secure network address translation (SNAT) dari Gateway NAT Internet untuk mengakses Internet. Untuk informasi lebih lanjut, lihat Gunakan fitur SNAT dari Gateway NAT Internet untuk mengakses Internet.
Untuk pemeriksaan kesehatan HTTP, periksa apakah jalur permintaan dan domain permintaan dikonfigurasi dengan benar.
Untuk pemeriksaan kesehatan HTTP, jika antarmuka pemeriksaan kesehatan layanan backend perlu diakses melalui HTTPS, aktifkan one-way Transport Layer Security (TLS) untuk layanan backend di Policies.
Untuk pemeriksaan kesehatan HTTP, jika konfigurasi sebelumnya semuanya benar, masalah ini mungkin disebabkan oleh interval pemeriksaan kesehatan yang sama dengan durasi koneksi backend dipegang. Dalam hal ini, coba tingkatkan interval pemeriksaan kesehatan.
Bagaimana cara menentukan penyebab kesalahan permintaan?
Periksa apakah respons berisi header
x-envoy-upstream-service-time. Jika respons berisi headerx-envoy-upstream-service-time, instance gateway telah meneruskan permintaan ke layanan backend untuk diproses, dan kesalahan dapat disebabkan oleh logika layanan backend.Periksa apakah bidang
upstream_service_timekosong di log akses instance gateway Anda. Jika bidangupstream_service_timetidak kosong, instance gateway Anda telah meneruskan permintaan ke layanan backend untuk diproses, dan kesalahan dapat disebabkan oleh logika layanan backend.
Apa yang harus saya lakukan jika sertifikat HTTPS yang diperbarui di Cloud-native API Gateway tidak berlaku?
Masalah ini terjadi karena sertifikat HTTPS dikonfigurasikan untuk node sebelumnya yang terhubung ke instance gateway Anda. Node seperti itu bisa berupa instance Classic Load Balancer (CLB), Dynamic Content Delivery Network (DCDN), Web Application Firewall (WAF), atau layanan Anti-DDoS Proxy. Periksa apakah sertifikat HTTPS pada node yang terhubung diperbarui. Berdasarkan praktik terbaik, kami sarankan Anda mengonfigurasi sertifikat HTTPS hanya pada satu node. Jika DCDN atau WAF terhubung ke instance gateway Anda, konfigurasikan sertifikat HTTPS hanya pada DCDN atau WAF dan gunakan HTTP untuk instance gateway Anda.
Bagaimana prioritas rute ditentukan di Cloud-native API Gateway?
Di halaman Route Settings instance gateway Anda, rute terdaftar dalam urutan prioritas menurun. Prioritas pencocokan ditentukan berdasarkan nama domain atau aturan routing. Precise domain names memiliki prioritas lebih tinggi daripada wildcard domain names. Misalnya, test.example.com memiliki prioritas lebih tinggi daripada *.example.com. Untuk jalur yang termasuk dalam nama domain yang sama, exact matches memiliki prioritas lebih tinggi daripada prefix matches, yang pada gilirannya memiliki prioritas lebih tinggi daripada regular expression matches. Jika permintaan memiliki nama domain dan jalur yang sama, those with more matching conditions diprioritaskan daripada those with fewer matching conditions. Kondisi pencocokan terdapat di bagian Header dan Query permintaan.
Mengapa permintaan HTTPS gagal ketika DCDN mendahului Cloud-native API Gateway?
Masalah ini terjadi karena DCDN tidak menyertakan Server Name Indication (SNI) dalam permintaan balik ke origin yang dikirim ke gateway. Untuk mengatasi hal ini, tambahkan SNI ke konfigurasi balik ke origin DCDN.
Mengapa permintaan HTTPS gagal ketika WAF mendahului Cloud-native API Gateway?
Masalah ini terjadi karena WAF tidak menyertakan SNI dalam permintaan balik ke origin yang dikirim ke gateway. Jika Anda menambahkan situs web ke WAF dalam mode rekaman Canonical Name (CNAME), pilih Enable Origin SNI pada langkah Enter Your Website Information.
Apakah Cloud-native API Gateway mendukung WebSocket?
Ya, WebSocket didukung dan diaktifkan secara default di Cloud-native API Gateway.
Apakah Cloud-native API Gateway mendukung gRPC?
Ya, Cloud-native API Gateway mendukung gRPC. gRPC menggunakan HTTP/2 untuk mentransmisikan data. Konfirmasikan bahwa konfigurasi EnableHttp2 = true ditentukan di halaman Parameter Settings.
Apakah Cloud-native API Gateway mendukung dekompresi GZIP?
Ya, Cloud-native API Gateway mendukung dekompresi GZIP. Konfirmasikan bahwa konfigurasi EnableGzip = true ditentukan di halaman Parameter Settings. Algoritma kompresi gzip dan Brotli didukung. Anda dapat menentukan parameter ZipAlgorithm untuk mengonfigurasi algoritma kompresi. Secara default, parameter ZipAlgorithm diatur ke gzip.
Apakah Cloud-native API Gateway mendukung retensi status huruf besar/kecil di header permintaan dan respons?
Ya, huruf besar dan kecil dapat tetap seperti semula di header permintaan dan respons. Konfirmasikan bahwa konfigurasi PreserveHeaderFormat = true ditentukan di halaman Parameter Settings instance gateway. Parameter PreserveHeaderFormat hanya berlaku saat HTTP 1.0 atau 1.1 digunakan. Protokol HTTP/2 mengharuskan semua header permintaan dan respons berada dalam huruf kecil.
Apakah Cloud-native API Gateway mendukung HTTP/3?
Ya, Cloud-native API Gateway mendukung HTTP/3. Konfirmasikan bahwa konfigurasi EnableHttp3 = true ditentukan di halaman Parameter Settings instance gateway.
Mengapa semua header permintaan dan respons berubah menjadi huruf kecil setelah permintaan dan respons dilewatkan ke Cloud-native API Gateway?
Secara default, Cloud-native API Gateway mengubah semua header permintaan dan respons menjadi huruf kecil. Jika Anda ingin mempertahankan status huruf besar/kecil aslinya, tentukan konfigurasi PreserveHeaderFormat = true di halaman Parameter Settings.
Mengapa instance Cloud-native API Gateway saya tidak dapat mengakses Internet setelah saya mengonfigurasi nama domain DNS untuk instance saya?
Jika nama domain Domain Name System (DNS) yang dikonfigurasi adalah nama domain publik, aktifkan SNAT dari gateway NAT untuk memungkinkan gateway mengakses Internet. Secara default, gateway tidak dapat mengakses Internet.
Analisis Tracing diaktifkan di Cloud-native API Gateway tetapi saya tidak mendapatkan hasil dari pencarian informasi jejak di konsol ARMS. Mengapa demikian?
Periksa konfigurasi gateway Anda apakah EnableGenerateRequestId diatur ke true. Jika nilainya false, Anda harus menambahkan header x-request-id yang sesuai ke permintaan Anda. Jika tidak, instance gateway tidak dapat melaporkan informasi jejak karena kurangnya informasi request-id.
Mengapa kode kesalahan 400 dikembalikan untuk permintaan?
Masalah ini mungkin disebabkan oleh alasan berikut:
Kesalahan protokol terjadi ketika klien mengirim permintaan. Lihat log akses instance gateway Anda. Jika
response_flags = DPEditemukan di log, masalah disebabkan oleh kesalahan protokol.Kode status 400 dikembalikan oleh layanan backend. Lihat log akses instance gateway Anda. Jika
response_flagskosong tetapiupstream_hostmemiliki nilai, kode status 400 dikembalikan oleh layanan backend, dan alamat IP backend dalam permintaan yang diteruskan oleh instance gateway Anda adalah alamat IP yang ditentukan diupstream_host.
Mengapa kode kesalahan 401 dikembalikan untuk permintaan?
Masalah ini mungkin disebabkan oleh alasan berikut:
Kredensial akses yang diperlukan tidak ada. Dalam hal ini, kesalahan dikembalikan oleh Cloud-native API Gateway. Periksa apakah fitur otentikasi atau plug-in WebAssembly diaktifkan.
Kesalahan juga mungkin dikembalikan oleh layanan backend. Periksa log akses instance gateway. Jika
response_flagskosong tetapiupstream_hostmemiliki nilai, kode status 401 dikembalikan oleh layanan backend, dan alamat IP backend dalam permintaan yang diteruskan oleh gateway adalah alamat IP yang ditentukan diupstream_host.
Mengapa kode kesalahan 403 dikembalikan untuk permintaan?
Masalah ini mungkin disebabkan oleh alasan berikut:
Klien kekurangan izin yang diperlukan. Dalam hal ini, kesalahan dikembalikan oleh Cloud-native API Gateway. Periksa apakah daftar hitam atau daftar putih alamat IP, fitur otentikasi, atau plug-in WebAssembly diaktifkan.
Kesalahan juga mungkin dikembalikan oleh layanan backend. Lihat log akses gateway. Jika
response_flagskosong danupstream_hostmemiliki nilai, kode status 403 dikembalikan oleh layanan backend, dan alamat IP backend dalam permintaan yang diteruskan oleh gateway adalah alamat IP yang ditentukan diupstream_host.
Mengapa kode kesalahan 404 dikembalikan untuk permintaan?
Masalah ini mungkin disebabkan oleh alasan berikut:
Tidak ada aturan routing yang sesuai yang dikonfigurasikan di Cloud-native API Gateway. Lihat log akses gateway. Jika
response_flags = NRditemukan di log, tidak ada aturan routing yang dikonfigurasikan.Kesalahan juga mungkin dikembalikan oleh layanan backend. Lihat log akses gateway. Jika
response_flagskosong tetapiupstream_hostmemiliki nilai, kode status 404 dikembalikan oleh layanan backend, dan alamat IP backend dalam permintaan yang diteruskan oleh gateway adalah alamat IP yang ditentukan diupstream_host.
Mengapa kode kesalahan 405 dikembalikan untuk permintaan?
Jika perlindungan WAF diaktifkan dan permintaan memicu aturan perlindungan WAF, kode status dikembalikan oleh WAF.
Mengapa kode kesalahan 413 dikembalikan untuk permintaan?
Masalah ini mungkin disebabkan oleh alasan berikut:
Ukuran permintaan melebihi ukuran cache koneksi instance gateway. Dalam hal ini, Anda harus meningkatkan nilai parameter
DownstreamConnectionBufferLimitsdi halaman Parameter Settings.Kesalahan juga mungkin dikembalikan oleh layanan backend. Lihat log akses gateway. Jika
response_flagskosong tetapiupstream_hostmemiliki nilai, kode status 413 dikembalikan oleh layanan backend, dan alamat IP backend dalam permintaan yang diteruskan oleh gateway adalah alamat IP yang ditentukan diupstream_host.
Mengapa kode kesalahan 429 dikembalikan untuk permintaan?
Aturan throttling dipicu untuk instance gateway. Lihat log akses gateway. Jika response_flags = RL ditemukan di log, periksa aturan throttling instance gateway.
Mengapa kode kesalahan 502 dikembalikan untuk permintaan?
Masalah ini mungkin disebabkan oleh alasan berikut:
Kesalahan protokol permintaan yang dikembalikan oleh layanan backend. Lihat log akses gateway. Jika
response_flags = UPEditemukan di log, penyebab paling umum adalah bahwa header yang dikembalikan oleh layanan backend berisi bidangTransfer-Encodingduplikat. Dalam hal ini, periksa layanan backend.Kode status 502 yang dikembalikan oleh layanan backend. Lihat log akses gateway. Jika
response_flagskosong tetapiupstream_hostmemiliki nilai, kode status 502 dikembalikan oleh layanan backend, dan alamat IP backend dalam permintaan yang diteruskan oleh gateway adalah alamat IP yang ditentukan diupstream_host.
Mengapa kode kesalahan 503 dikembalikan untuk permintaan?
Masalah ini mungkin disebabkan oleh alasan berikut:
Layanan tujuan yang ditentukan dalam aturan routing instance gateway tidak memiliki alamat IP yang sehat. Lihat log akses gateway. Jika
response_flags = UHditemukan di log, tidak ada alamat IP sehat yang tersedia untuk layanan tujuan.Koneksi ditutup oleh layanan backend ketika instance gateway meneruskan permintaan. Lihat log akses gateway. Jika
response_flags = UCditemukan di log, nilaiidle timeoutlayanan backend kurang dari nilaiUpstreamIdleTimeoutyang ditentukan untuk gateway. Dalam hal ini, aturUpstreamIdleTimeoutke nilai yang lebih kecil di halaman Parameter Settings instance gateway.Alamat IP layanan backend tidak dapat diakses dari gateway. Lihat log akses gateway. Jika
response_flags = UFatauresponse_flags = URXditemukan di log, grup keamanan layanan backend tidak mengizinkan akses dari gateway. Periksa apakah grup keamanan layanan backend mengizinkan gateway mengakses port. Untuk informasi lebih lanjut tentang cara mengonfigurasi aturan grup keamanan, lihat Konfigurasikan aturan grup keamanan.Instance gateway tidak terkait dengan layanan backend. Lihat log akses gateway. Jika
response_flags = NCditemukan di log, masalah ini mungkin disebabkan oleh alasan berikut:Layanan tidak lagi ada.
Port dinamis layanan backend dipilih. Jika layanan backend memiliki beberapa port, Anda harus memilih port tetap daripada port dinamis saat memilih layanan tujuan untuk pengaturan rute.
Port tetap dipilih oleh layanan backend, tetapi port layanan diubah.
Kode status 503 dikembalikan oleh layanan backend. Jika
response_flagsdi log null tetapiupstream_hosttidak null, layanan backend mengembalikan 503, dan alamat IP backend spesifik yang diteruskan oleh gateway adalah kontenupstream_host.
Apa yang harus saya lakukan jika nilai response_code di log adalah 0?
Jika nilai response_code adalah 0, klien tidak menerima response code.
Masalah ini mungkin disebabkan oleh alasan berikut:
Klien telah menutup koneksi sebelum menerima kode respons. Masalah ini terjadi dalam skenario seperti sinyal jaringan lemah dan respons lambat di backend. Anda dapat memeriksa di log apakah nilai bidang
response_flagsadalah DC.Permintaan HTTPS tidak membawa Server Name Indication (SNI) dan tidak ada sertifikat HTTPS yang dikonfigurasikan untuk nama domain wildcard yang dimulai dengan tanda bintang (*). SNI adalah ekstensi dari protokol Transport Layer Security (TLS) dan digunakan untuk membawa informasi nama domain. Anda dapat memeriksa di log apakah bidang
requested_server_namekosong.