All Products
Search
Document Center

Container Service for Kubernetes:Buat dan gunakan NGINX Ingress

Last Updated:Jun 21, 2026

NGINX Ingress Controller berfungsi sebagai gerbang masuk untuk kluster terkelola Alibaba Cloud Container Service for Kubernetes (ACK), mengarahkan lalu lintas eksternal ke layanan internal berdasarkan aturan routing yang fleksibel. Dengan mendukung fitur seperti enkripsi HTTPS, rilis canary, dan konfigurasi kustom melalui anotasi, controller ini menyediakan akses jaringan Lapisan 7 (L7) yang aman, andal, dan dapat diskalakan.

Penting

Catatan penggunaan

  • Jangan hapus layanan default yang digunakan oleh NGINX Ingress Controller. Setelah add-on diinstal, layanan default bernama nginx-ingress-lb dibuat di namespace kube-system. Menghapus layanan ini menyebabkan add-on menjadi tidak stabil dan dapat crash.

  • Gunakan Add-ons atau OpenAPI untuk mengonfigurasi parameter kustom pada add-on. Memodifikasi konfigurasi melalui metode lain dapat menyebabkan add-on mengalami malfungsi dan mengganggu proses peningkatan di masa depan.

  • Gunakan ConfigMap NGINX Ingress untuk konfigurasi kustom. Dukungan teknis tidak mencakup masalah yang disebabkan oleh konfigurasi tambahan, seperti snippet atau kode Lua.

  • Segera lakukan peningkatan add-on NGINX Ingress Controller untuk mencegah gangguan bisnis akibat bug atau kerentanan keamanan pada versi komunitas hulu.

Instal add-on NGINX Ingress Controller

Saat pembuatan kluster

1. Pilih add-on

  1. Masuk ke Konsol ACK dan klik Create Kubernetes Cluster.

  2. Pada langkah Component Configurations, di bagian Ingress, pilih NGINX Ingress.

2. Pilih sumber Server Load Balancer (SLB)

  • New: Secara otomatis membuat instance CLB publik atau privat multi-zona di VPC kluster. Instance ini menggunakan metode penagihan pay-by-specification dan memiliki tipe instans tertentu.

  • Use Existing: Pilih instance CLB publik yang ada di wilayah yang sama dengan kluster atau instance CLB privat di VPC yang sama. Pastikan instance CLB tersebut tidak dikaitkan dengan kluster lain.

Instal dari halaman Add-ons

Menginstal add-on dari halaman Add-ons secara otomatis membuat instance CLB yang menghadap publik dengan metode penagihan pay-by-specification dan tipe instans Small I (slb.s1.small). Instance ini berfungsi sebagai titik masuk trafik untuk NGINX Ingress.

  1. Masuk ke Konsol ACK atau . Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Components and Add-ons.

  3. Temukan add-on NGINX Ingress Controller di tab Network atau gunakan bilah pencarian. Di pojok kanan bawah kartu add-on, klik Install.

  4. Di kotak dialog Install Comment NGINX Ingress Controller, konfigurasikan parameter dan klik OK.

Buat aplikasi contoh

Aplikasi contoh ini menerapkan dua beban kerja tanpa status (Deployment) bernama coffee dan tea, serta layanan (Service) terkaitnya bernama coffee-svc dan tea-svc.

Konsol

1. Buat resource

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Workloads > Deployments.

  3. Klik Create from YAML. Pilih Custom dari daftar drop-down Sampel Template. Salin konten berikut ke editor templat dan klik Create.

    Contoh YAML aplikasi

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: coffee
      namespace: default
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: coffee
      template:
        metadata:
          labels:
            app: coffee
        spec:
          containers:
          - name: coffee
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: coffee-svc
      namespace: default
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: coffee
      type: ClusterIP
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tea
      namespace: default
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: tea
      template:
        metadata:
          labels:
            app: tea
        spec:
          containers:
          - name: tea
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: tea-svc
      namespace: default
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: tea
      type: ClusterIP

2. Lihat hasilnya

Di kotak dialog YAML Resource Creation Result, klik View di kolom Actions untuk sebuah resource guna memastikan bahwa resource tersebut telah dibuat. 

kubectl

  1. Dapatkan KubeConfig untuk kluster Anda dan gunakan kubectl untuk terhubung ke kluster.

  2. Buat file bernama test-deployment-service.yaml dengan konten berikut.

    File YAML contoh

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: coffee
      namespace: default
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: coffee
      template:
        metadata:
          labels:
            app: coffee
        spec:
          containers:
          - name: coffee
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: coffee-svc
      namespace: default
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: coffee
      type: ClusterIP
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tea
      namespace: default
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: tea
      template:
        metadata:
          labels:
            app: tea
        spec:
          containers:
          - name: tea
            image: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginxdemos:latest
            ports:
            - containerPort: 80
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: tea-svc
      namespace: default
    spec:
      ports:
      - port: 80
        targetPort: 80
        protocol: TCP
      selector:
        app: tea
      type: ClusterIP
  3. Terapkan konfigurasi untuk membuat Deployment dan Service.

    kubectl apply -f test-deployment-service.yaml
  4. Verifikasi status Deployment coffee dan tea.

    kubectl get deployment coffee tea

    Output yang diharapkan:

    NAME     READY   UP-TO-DATE   AVAILABLE   AGE
    coffee   2/2     2            2           14m
    tea      2/2     2            2           14m
  5. Verifikasi status Service coffee-svc dan tea-svc.

    kubectl get service coffee-svc tea-svc

    Output yang diharapkan:

    NAME         TYPE        CLUSTER-IP        EXTERNAL-IP   PORT(S)   AGE
    coffee-svc   ClusterIP   192.168.xxx.xxx   <none>        80/TCP    15m
    tea-svc      ClusterIP   192.168.xxx.xxx   <none>        80/TCP    15m

Buat NGINX Ingress

Contoh ini menggunakan test-nginx-ingress.com sebagai nama domain (host). Ganti dengan nama domain terdaftar Anda sendiri. Pemetaan path (paths) diambil dari contoh Buat aplikasi contoh. Sesuaikan path-path ini agar sesuai dengan konfigurasi aplikasi Anda.

Konsol

1. Buat Ingress

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih Network > Ingresses. Pilih namespace default, klik Create Ingress, dan konfigurasikan Ingress sebagai berikut.

    • Gateway Type: Nginx Ingress

    • Name: test-nginx-ingress

    • Domain Name: test-nginx-ingress.com (Ganti dengan nama domain terdaftar Anda)

    • Mappings:

      • Path: /coffee

      • Rule: Default (ImplementationSpecific)

      • Service: coffee-svc

      • Port: 80

  3. Klik +Add untuk mengonfigurasi path untuk layanan tea-svc.

    • Mappings:

      • Path: /tea

      • Rule: Default (ImplementationSpecific)

      • Service: tea-svc

      • Port: 80

  4. Klik +Add Rule untuk menambahkan nama domain www.test-nginx-ingress.com (ganti dengan nama domain terdaftar Anda) dan konfigurasikan pemetaan path-nya. Setelah selesai, klik OK.

2. Dapatkan titik akhir

Setelah sekitar satu menit, segarkan halaman. Nginx Ingress berhasil dibuat jika Alamat IP Elastis (EIP) muncul di kolom Endpoint. EIP ini adalah alamat layanan publik dari instance Cloud Load Balancer (CLB) terkait.

Jika informasi titik akhir tidak muncul setelah beberapa menit, klik nama Ingress dan periksa tab Events untuk troubleshooting.

kubectl

  1. Buat file bernama test-ingress.yaml dengan konten berikut.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: test-nginx-ingress
      namespace: default
    spec:
      ingressClassName: nginx
      rules:
      - host: test-nginx-ingress.com # Ganti dengan nama domain terdaftar Anda
        http:
          paths:
          - path: /coffee
            backend:
              service: 
                name: coffee-svc
                port:
                  number: 80
            pathType: ImplementationSpecific
          - path: /tea
            backend:
              service: 
                name: tea-svc
                port:
                  number: 80
            pathType: ImplementationSpecific
      - host: www.test-nginx-ingress.com # Ganti dengan nama domain terdaftar Anda
        http:
          paths:
          - path: /coffee
            backend:
              service: 
                name: coffee-svc
                port:
                  number: 80
            pathType: ImplementationSpecific
          - path: /tea
            backend:
              service: 
                name: tea-svc
                port:
                  number: 80
            pathType: ImplementationSpecific

    Deskripsi parameter:

    • name: Nama Ingress. Dalam contoh ini, namanya adalah test-nginx-ingress.

    • host: Nama domain yang digunakan untuk mengakses layanan. Dalam contoh ini, nama domainnya adalah test-nginx-ingress.com. Ganti dengan nama domain terdaftar Anda.

    • path: Path URL untuk aturan tersebut. Agar permintaan diarahkan ke backend, permintaan tersebut harus cocok dengan host dan path yang ditentukan. Dalam contoh ini, path-nya adalah /coffee dan /tea.

    • backend: Terdiri dari nama layanan dan port layanan.

      • Nama layanan: Nama layanan backend tempat Ingress meneruskan trafik. Misalnya, coffee-svc dan tea-svc.

      • Port layanan: Port target pada Service backend. Dalam contoh ini, port-nya adalah 80.

  2. Buat Ingress.

    kubectl apply -f test-ingress.yaml
  3. Lihat Ingress dan dapatkan Alamat IP Elastis (EIP)-nya, misalnya 8.xxx.xxx.117.

    kubectl get ingress

    Output yang diharapkan:

    NAME                 CLASS   HOSTS                                               ADDRESS         PORTS   AGE
    test-nginx-ingress   nginx   test-nginx-ingress.com,www.test-nginx-ingress.com   8.xxx.xxx.117   80      2m39s
  4. Gunakan EIP untuk memverifikasi bahwa Nginx Ingress berfungsi dengan benar.

    curl http://8.xxx.xxx.117/coffee -H "Host: test-nginx-ingress.com"

    Output yang diharapkan:

    ...
    <title>Halo Dunia</title>
    ...
    <p>Alamat&nbsp;server: 10.xxx.xxx.19:80</p>
    <p>Nama&nbsp;server: coffee-96d4bc87-l29dh</p>
    <p class="smaller">Tanggal: 08/Aug/2025:02:21:02 +0000</p>
    <p class="smaller">URI: /coffee</p>
    ...
        <div id="footer">
            <div id="center" align="center">
                ID Permintaan: 42e2d73c85b16b55b6ab52deb7d995d4<br/>
                &copy; NGINX, Inc. 2018
            </div>
        </div>
    ...

Konfigurasi resolusi DNS

Daftarkan nama domain. Anda hanya perlu menambahkan nama domain jika domain tersebut didaftarkan melalui penyedia pihak ketiga. Alibaba Cloud secara otomatis menambahkan nama domain yang dibeli melalui platformnya ke zona otoritatif publik di Alibaba Cloud DNS, sehingga Anda dapat langsung menambahkan rekaman DNS.

1. Tambahkan nama domain

  1. Buka Alibaba Cloud DNS - Zona Publik.

    Di tab Public Zone, klik Add Zone.

  2. Masukkan nama domain yang ingin Anda tambahkan, dan pilih instance Public Zone yang telah Anda buat. Untuk informasi selengkapnya tentang parameter, lihat Beli dan ikat nama domain.

2. Tambahkan rekaman DNS

  1. Temukan nama domain target dan klik Settings di kolom Actions. Lalu, klik Add Record. Tambahkan rekaman DNS dengan tipe rekaman A dan rekaman host @. Record Value adalah alamat akses NGINX Ingress.

  2. Ikuti langkah yang sama untuk menambahkan rekaman DNS lain dengan rekaman host diatur ke www.

  3. Klik Probing di sebelah rekaman DNS baru untuk memeriksa status resolusinya.

Untuk informasi selengkapnya, lihat Tambahkan rekaman resolusi website.

3. Verifikasi nama domain dan path

Di browser Anda, kunjungi http://test-nginx-ingress.com/coffee, ganti test-nginx-ingress.com dengan nama domain aktual Anda, untuk memverifikasi bahwa path layanan dapat diakses.

Jika permintaan berhasil, halaman akan mengembalikan informasi dari pod backend NGINX, termasuk bidang server address, server name, Date, dan URI.

Untuk mengonfirmasi hasilnya, Anda juga dapat merujuk ke Metode untuk menguji resolusi DNS. Jika rekaman DNS tidak berlaku, lihat Cara cepat mengatasi kegagalan resolusi DNS.

Konfigurasi keamanan HTTPS

Beli sertifikat komersial, dan ajukan sertifikat tersebut. Pastikan sertifikat berada dalam status Issued. Kemudian, ikuti langkah-langkah berikut untuk mengunduh sertifikat dan menambahkan konfigurasi TLS. Hal ini memungkinkan akses HTTPS terenkripsi ke domain Anda.

Konsol

1. Unduh sertifikat

  1. Masuk ke Konsol Layanan Manajemen Sertifikat atau .Di panel navigasi kiri, pilih Certificate Management > SSL Certificate Management.

  2. Di tab Commercial Certificates, pilih sertifikat yang ingin Anda unduh, lalu klik Download di pojok kiri bawah daftar sertifikat.

  3. Di kotak dialog yang muncul, pilih Nginx sebagai tipe server, unduh paket sertifikat, lalu ekstrak.

Untuk detail selengkapnya, lihat Unduh sertifikat SSL.

2. Buat Secret

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Configurations > Secrets.

  3. Di halaman Secrets, pilih namespace default, klik Create di pojok kiri atas, konfigurasikan Secret baru di panel yang muncul, lalu klik OK.

    • Name: nginx-ingress-tls

    • Type: TLS Certificate

    • Certificates: Seluruh isi file sertifikat (.pem) yang telah diunduh dan diekstrak.

    • Key: Seluruh isi file kunci privat (.key) yang telah diunduh dan diekstrak.

3. Tambahkan konfigurasi TLS

  1. Di panel navigasi kiri, pilih Network > Ingresses. Di kolom Actions Ingress target Anda, klik Update.

  2. Di halaman Modify Ingress, tambahkan konfigurasi TLS berikut lalu klik OK.

    • TLS Settings: Diaktifkan

    • Domain Name: test-nginx-ingress.com (Ganti dengan nama domain terdaftar aktual Anda.)

    • Secrets: nginx-ingress-tls

4. Verifikasi akses HTTPS

Di browser web Anda, buka https://test-nginx-ingress.com/coffee (ganti dengan nama domain terdaftar aktual Anda) untuk memverifikasi akses HTTPS terenkripsi ke path layanan.

Kubectl

  1. Masuk ke Konsol Layanan Manajemen Sertifikat.Di panel navigasi kiri, pilih Certificate Management > SSL Certificate Management.

  2. Di tab Commercial Certificates, pilih sertifikat yang ingin Anda unduh, lalu klik Download di pojok kiri bawah daftar sertifikat.

  3. Di kotak dialog yang muncul, pilih Nginx sebagai tipe server, unduh paket sertifikat, lalu ekstrak.

  4. Gunakan file sertifikat (.pem) dan file kunci privat (.key) yang telah diunduh untuk membuat Secret.

    kubectl create secret tls nginx-ingress-tls --cert test-nginx-ingress.com.pem --key test-nginx-ingress.com.key -n default
  5. Tambahkan konfigurasi TLS ke Ingress test-nginx-ingress. Ganti test-nginx-ingress.com dalam perintah dengan nama domain terdaftar aktual Anda.

    kubectl patch ingress test-nginx-ingress -p '{"spec":{"tls":[{"hosts":["test-nginx-ingress.com"],"secretName":"nginx-ingress-tls"}]}}'
  6. Verifikasi akses HTTPS terenkripsi ke path layanan dengan menjalankan perintah berikut menggunakan Alamat IP Elastis aktual Anda.

    curl -v -k https://8.xxx.xxx.117/coffee -H "Host: test-nginx-ingress.com"
    • Parameter:

      • -v: Menampilkan output verbose, termasuk proses jabat tangan TLS.

      • -k (atau --insecure): Melewati verifikasi sertifikat. Gunakan opsi ini jika Anda menggunakan sertifikat tanda tangan sendiri.

    • Output yang diharapkan:

      ...
      *   Trying 8.xxx.xxx.117:443...
      * Connected to 8.xxx.xxx.117 (8.xxx.xxx.117) port 443
      * ALPN: curl offers h2,http/1.1
      * (304) (OUT), TLS handshake, Client hello (1):
      * (304) (IN), TLS handshake, Server hello (2):
      * (304) (IN), TLS handshake, Unknown (8):
      * (304) (IN), TLS handshake, Certificate (11):
      * (304) (IN), TLS handshake, CERT verify (15):
      * (304) (IN), TLS handshake, Finished (20):
      * (304) (OUT), TLS handshake, Finished (20):
      ...
      <title>Hello World</title>
      ...
      <p>Server&nbsp;address: 10.xxx.xxx.159:80</p>
      <p>Server&nbsp;name: coffee-96d4bc87-6cstv</p>
      <p class="smaller">Date: 14/Aug/2025:09:27:42 +0000</p>
      <p class="smaller">URI: /coffee</p>
      ...
          <div id="footer">
              <div id="center" align="center">
                  Request ID: fee5fe107106748a35d99a2dbbbc6652<br/>
                  &copy; NGINX, Inc. 2018
              </div>
          </div>
      ...

Konfigurasi lanjutan

Rilis canary

Untuk meningkatkan layanan, Anda dapat menggunakan berbagai strategi penerapan, seperti pembaruan bergulir, rilis bertahap, penyebaran biru-hijau, dan rilis canary. Untuk petunjuk detail, lihat Implementasikan rilis bertahap dan penyebaran biru-hijau menggunakan NGINX Ingress.

Protokol layanan backend

Untuk menentukan protokol layanan backend, tambahkan anotasi nginx.ingress.kubernetes.io/backend-protocol. Protokol yang didukung adalah HTTP, HTTPS, gRPC, dan gRPCS. Untuk contoh konfigurasi, lihat Konfigurasi layanan gRPC untuk NGINX Ingress.

Penulisan ulang URL

Saat menggunakan controller NGINX Ingress, permintaan diteruskan berdasarkan path lengkap. Misalnya, permintaan ke /service1/api diteruskan ke path /service1/api pada pod backend. Jika path layanan backend Anda adalah /api, terjadi ketidakcocokan path yang mengakibatkan error 404. Untuk mengatasi masalah ini, Anda dapat menambahkan anotasi nginx.ingress.kubernetes.io/rewrite-target untuk menulis ulang path permintaan ke direktori yang benar.

Untuk petunjuk detail, lihat Konfigurasi pengalihan URL.

Anotasi

NGINX Ingress mendukung berbagai fitur yang dapat diaktifkan dengan anotasi. Untuk informasi selengkapnya, lihat Kamus konfigurasi NGINX Ingress dan Konfigurasi lanjutan NGINX Ingress.

Observabilitas

Aktifkan Simple Log Service (SLS) saat pembuatan kluster untuk mengakses laporan analisis log akses NGINX Ingress yang komprehensif dan dasbor pemantauan waktu nyata. Untuk detailnya, lihat Analisis dan pantau log akses NGINX Ingress.

Skenario beban tinggi

Untuk meningkatkan kinerja dan stabilitas NGINX Ingress Controller dalam skenario beban tinggi, lihat Konfigurasi NGINX Ingress Controller untuk skenario muatan tinggi dan Saran penggunaan NGINX Ingress Controller.

FAQ

IP eksternal tidak dapat dijangkau dari dalam kluster

Gejala

Beberapa Pod dalam kluster tidak dapat mengakses Pod backend menggunakan alamat eksternal NGINX Ingress Controller (alamat IP instance load balancer), sedangkan yang lain bisa.

Penyebab

Masalah ini disebabkan oleh pengaturan externalTrafficPolicy pada Service controller, yang menentukan cara menangani trafik eksternal. Saat diatur ke local, hanya Pod backend pada node yang sama dengan Pod controller yang dapat menerima permintaan. Saat diatur ke Cluster, akses berfungsi sebagaimana mestinya. Saat resource dalam kluster mengakses Service menggunakan alamat IP eksternal load balancer, permintaan tersebut juga dianggap sebagai trafik eksternal.

Solusi

  • (Direkomendasikan) Dari dalam kluster Kubernetes, akses NGINX Ingress menggunakan ClusterIP atau nama layanannya. Nama layanan NGINX Ingress adalah nginx-ingress-lb.kube-system.

  • Jalankan kubectl edit svc nginx-ingress-lb -n kube-system untuk memodifikasi Service NGINX Ingress. Ubah externalTrafficPolicy dari Service LoadBalancer menjadi Cluster. Jika plugin jaringan kontainer kluster adalah Flannel, permintaan kehilangan IP sumber klien. Jika Anda menggunakan Terway, IP sumber klien dipertahankan.

    Contoh:

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        service.beta.kubernetes.io/backend-type: eni   # Meneruskan trafik langsung ke Elastic Network Interface (ENI).
      labels:
        app: nginx-ingress-lb
      name: nginx-ingress-lb
      namespace: kube-system
    spec:
      externalTrafficPolicy: Cluster

Untuk informasi selengkapnya tentang anotasi Service, lihat Konfigurasi Classic Load Balancer (CLB) menggunakan anotasi.

Header atau cookie besar

Jika permintaan klien berisi header permintaan atau cookie yang besar, NGINX Ingress mungkin mengembalikan error seperti "400 Request Header Or Cookie Too Large /Bad request". Untuk mengatasi hal ini, tingkatkan ukuran buffer dengan memodifikasi pengaturan berikut:

  • client-header-buffer-size: Ukuran buffer untuk header permintaan klien. Nilai default-nya adalah 1k.

  • large-client-header-buffers: Jumlah maksimum dan ukuran buffer yang digunakan untuk membaca header permintaan klien yang besar. Nilai default-nya adalah 4 8k.

Jalankan kubectl edit cm -n kube-system nginx-configuration untuk mengedit ConfigMap dan memodifikasi pengaturan ini. Contoh:

client-header-buffer-size: "16k"
large-client-header-buffers: "4 32k" 

Setelah memperbarui pengaturan, verifikasi bahwa bidang data NGINX mencerminkan perubahan tersebut. Jalankan kubectl exec <nginx-ingress-pod> -n kube-system -- cat /etc/nginx/nginx.conf | vim - untuk melihat file nginx.conf dan pastikan perubahan ConfigMap telah disinkronkan.

Konfigurasi CORS

Aktifkan Cross-Origin Resource Sharing (CORS) dengan menambahkan anotasi tertentu ke bagian metadata.annotations resource Ingress Anda. Untuk informasi selengkapnya, lihat Konfigurasi CORS untuk NGINX Ingress.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/enable-cors: "true"     # Mengaktifkan CORS.
    nginx.ingress.kubernetes.io/cors-allow-origin: "*"  # Mengizinkan akses dari semua domain.
    nginx.ingress.kubernetes.io/cors-allow-methods: "GET, PUT, POST, DELETE, PATCH, OPTIONS"  # Metode HTTP yang diizinkan.
    nginx.ingress.kubernetes.io/cors-allow-headers: "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range" # Header permintaan kustom yang diizinkan.
    nginx.ingress.kubernetes.io/cors-expose-headers: "Content-Length,Content-Range"  # Header respons yang diekspos.
    nginx.ingress.kubernetes.io/cors-max-age: "86400"  # Durasi cache permintaan preflight.
spec:
  ingressClassName: nginx
  rules:
  - host: example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: example-service
            port:
              number: 80

Transmisi langsung IP klien

Secara default, NGINX Ingress menggunakan header X-Forwarded-For dan X-Real-IP untuk meneruskan alamat IP klien. Namun, jika klien secara eksplisit mengatur header ini dalam permintaan, server backend mungkin tidak dapat memperoleh alamat IP klien yang sebenarnya.

Untuk mengaktifkan transmisi langsung IP klien Lapisan 7 untuk Ingress, jalankan perintah kubectl edit cm -n kube-system nginx-configuration dan tambahkan pengaturan berikut ke ConfigMap.

compute-full-forwarded-for: "true"
forwarded-for-header: "X-Forwarded-For"
use-forwarded-headers: "true"

Jika NGINX Ingress berada di belakang beberapa lapisan proxy, sesuaikan konfigurasi berdasarkan parameter proxy-real-ip-cidr. Tambahkan alamat IP proxy hulu ke proxy-real-ip-cidr dalam format CIDR, pisahkan beberapa blok CIDR dengan koma. Untuk informasi selengkapnya, lihat Gunakan WAF.

proxy-real-ip-cidr:  "0.0.0.0/0,::/0"  

Dalam skenario IPv6 dengan Classic Load Balancer (CLB) hulu, jika header X-Forwarded-For yang diterima oleh NGINX Ingress kosong, aktifkan Proxy Protocol pada CLB untuk memperoleh alamat IP klien. Untuk informasi selengkapnya tentang Proxy Protocol, lihat Peroleh alamat IP klien yang sebenarnya melalui pendengar Lapisan 4 instance CLB.

Referensi