全部產品
Search
文件中心

Container Service for Kubernetes:Nginx Ingress配置詞典

更新時間:Dec 26, 2025

您可以通過配置Nginx Ingress的ConfigMap資源或使用Nginx Ingress注釋來進行配置。本文列出了Nginx Ingress常用的注釋和ConfigMap欄位的具體說明與使用方法。

索引

資源

配置項

ConfigMap

ConfigMap預設配置說明

配置項說明

Annotation

負載平衡演算法

Cookie親和性

重新導向

Rewrite重寫

限流

容災

灰階發布

逾時相關配置

跨域

重試邏輯

IP存取控制

流量鏡像

安全防護

安全認證

ConfigMap預設配置說明

您可以通過kubectl edit cm -n kube-system nginx-configuration命令,對ConfigMap進行編輯。以下是ConfigMap預設配置和說明。更多配置資訊請參見官方文檔

apiVersion: v1
kind: ConfigMap
metadata:
 name: nginx-configuration
 namespace: <Namespace>  # 預設為kube-system
 labels:
   app: ingress-nginx
data:
   log-format-upstream: '$remote_addr - [$remote_addr] - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_length $request_time [$proxy_upstream_name] $upstream_addr $upstream_response_length $upstream_response_time $upstream_status $req_id $host [$proxy_alternative_upstream_name]'
   proxy-body-size: 20m
   proxy-connect-timeout: "10"
   max-worker-connections: "65536"
   enable-underscores-in-headers: "true"
   reuse-port: "true"
   worker-cpu-affinity: "auto"
   server-tokens: "false"
   ssl-redirect: "false"
   allow-backend-server-header: "true"
   ignore-invalid-headers: "true"
   generate-request-id: "true"
   upstream-keepalive-timeout: "900"

以下是配置項說明。

配置項

描述

log-format-upstream

配置日誌格式,修改後需同步修改 kube-system/k8s-nginx-ingress AliyunLogConfig 配置,並對齊SLS採集的日誌格式。配置樣本參見通過Log ServiceSLS的Controller Pod查看訪問日誌

proxy-body-size

設定用戶端請求本文允許的最大大小。詳情請參見Nginx的client_max_body_size

proxy-connect-timeout

設定與Proxy 伺服器建立串連的逾時,同時設定gRPC串連的grpc_connect_timeout。不能超過75秒,配置值僅為數值,無單位。

max-worker-connections

每個背景工作處理序可開啟的最大同時串連數。設定為0則使用 max-worker-open-files 的值。

enable-underscores-in-headers

是否支援包含底線的Header。

reuse-port

為每個背景工作處理序建立一個單獨的監聽通訊端,允許在背景工作處理序之間分配傳入串連。使用 SO_REUSEPORT 通訊端選項。

worker-cpu-affinity

自動將背景工作處理序綁定到可用的CPU,進行效能調優。適用於高效能情境。

server-tokens

在響應中發送Nginx伺服器標題,在錯誤頁面中顯示Nginx版本。設定為false表示禁用該功能。

ssl-redirect

如果伺服器具有TLS認證,則全域配置將強制使用HTTPS,並進行301重新導向。

allow-backend-server-header

允許從後端返回標題Server,而不是通用的Nginx字串。

ignore-invalid-headers

是否忽略包含無效名稱的Header欄位。

generate-request-id

如果請求中不存在X-Request-ID,則產生隨機值。

upstream-keepalive-timeout

設定與上遊伺服器的空閑保持活動串連的逾時時間。對應Nginx的keepalive_timeout指令配置。預設不配置,為60秒。

Ingress支援Annotation

在使用Nginx Ingress Controller時,可以根據應用的具體需求來調整其配置。您可以通過添加註釋(Annotations)來改變 Nginx的行為。以下是常用的注釋配置。如需瞭解更多注釋請參見Nginx Ingress Annotation

負載平衡演算法

Nginx Ingress提供多種負載平衡演算法來最佳化後端服務的流量分發。根據應用程式的特點和需求,您可以選擇不同的負載平衡策略。

注釋

描述

nginx.ingress.kubernetes.io/load-balance

用於設定後端服務的普遍負載平衡演算法。

  • round_robin(預設):輪詢調度,是最常用的負載平衡演算法,適用於大多數情境。

  • ewma:Peak EWMA演算法,適合需要快速回應時間的應用。

nginx.ingress.kubernetes.io/upstream-hash-by

一致性Hash是一種特殊的Hash演算法,通過構建環狀雜湊空間,替代普通的線性Hash空間。在增刪節點時,只需根據順時針原則遷移部分路由,其他路由保持不變,從而有效減少重新路由,實現負載平衡。

以下是一致性Hash負載平衡配置YAML樣本。

1.22及以上版本叢集

一致性Hash支援多種使用方式,例如:

  • "$request_uri":根據請求的URI進行hash。

  • "$request_uri$host":根據請求的URI和網域名稱進行hash。

  • "${request_uri}-text-value":根據請求的URI和一個自訂文本值進行hash。

apiVersion: networking.k8s.io/v1
kind: Ingress 
metadata: 
  name: ingress-test
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/upstream-hash-by: "$request_uri"               # 根據請求的URI進行hash。
spec:
  rules:
    - host: ''
      http:
        paths:
          - path: '/'
            backend:
              service:
                name: <YOUR_SERVICE_NAME>  #替換為您的目標服務名稱
                port:
                  number: <YOUR_SERVICE_PORT>  #替換為您的目標服務連接埠
            property:
              ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
            pathType: ImplementationSpecific
  ingressClassName: nginx

1.22以下版本叢集

一致性Hash支援多種使用方式,例如:

  • "$request_uri":根據請求的URI進行hash。

  • "$request_uri$host":根據請求的URI和網域名稱進行hash。

  • "${request_uri}-text-value":根據請求的URI和一個自訂文本值進行hash。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress-test
  namespace: default
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/upstream-hash-by: "$request_uri"               # 根據請求的URI進行hash。
spec:
  rules:
    - host: ''
      http:
        paths:
          - path: '/'
            backend:
              serviceName: <YOUR_SERVICE_NAME>  #替換為您的目標服務名稱
              servicePort: <YOUR_SERVICE_PORT>  #替換為您的目標服務連接埠

Cookie親和性

以下是基於Cookie的會話親和性的注釋和說明。

註解

描述

nginx.ingress.kubernetes.io/affinity

指定親和性類型。預設值為cookie,僅支援cookie親和性。

nginx.ingress.kubernetes.io/affinity-mode

定義親和性模式,可選值如下:

  • balanced:在請求分配時,將流量在多個執行個體間平衡,確保負載分布均勻。

  • persistent:將來自同一用戶端的請求持續發送到同一後端執行個體,確保資料一致性和會話保持。

預設值:balanced

nginx.ingress.kubernetes.io/session-cookie-name

指定Cookie的值作為Hash Key。

nginx.ingress.kubernetes.io/session-cookie-path

定義將在Cookie上設定的路徑,預設為/。如果nginx.ingress.kubernetes.io/use-regex設定為true,會話Cookie路徑不支援Regex。

nginx.ingress.kubernetes.io/session-cookie-max-age

設定產生的Cookie的有效期間,單位為秒。

nginx.ingress.kubernetes.io/session-cookie-expires

定義Cookie的到期時間,值為從建立到到期所經過的秒數。

以下是配置Cookie親和性注釋YAML樣本。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-test
  annotations:
    nginx.ingress.kubernetes.io/affinity: "cookie"
    nginx.ingress.kubernetes.io/session-cookie-name: "route"
    nginx.ingress.kubernetes.io/session-cookie-expires: "172800"
    nginx.ingress.kubernetes.io/session-cookie-max-age: "172800"
spec:
  ingressClassName: nginx
  rules:
  - host: stickyingress.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: http-svc
            port: 
              number: 80

重新導向

以下是Nginx Ingress重新導向注釋。

註解

描述

nginx.ingress.kubernetes.io/ssl-redirect

將HTTP請求重新導向為HTTPS。配置樣本請參見配置HTTP重新導向至HTTPS

nginx.ingress.kubernetes.io/force-ssl-redirect

將HTTP請求重新導向為HTTPS。

  • true:重新導向到HTTPS。

  • false:不重新導向到HTTPS。

預設值:false

nginx.ingress.kubernetes.io/permanent-redirect

永久重新導向的目標URL,必須包含Scheme(HTTP或HTTPS)。

nginx.ingress.kubernetes.io/permanent-redirect-code

永久重新導向的HTTP狀態代碼,預設值為301。

nginx.ingress.kubernetes.io/temporal-redirect

臨時重新導向的目標URL,必須包含Scheme(HTTP或者HTTPS)。

nginx.ingress.kubernetes.io/app-root

修改應用根路徑,對於訪問/的請求將會被重新導向為設定的新路徑。

以下是永久重新導向的目標URL配置樣本,展示如何通過Ingress規則將訪問foo.com的請求重新導向至bar.com

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-nginx
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/permanent-redirect: "https://bar.com"
spec:
  ingressClassName: nginx
  rules:
  - host: foo.com
    http:
      paths:
      - path: "/"
        pathType: ImplementationSpecific
        backend:
         service:
            name: httpbin
            port:
              number: 8000

Rewrite重寫

以下是Nginx Ingress重寫Rewrite注釋。

註解

描述

nginx.ingress.kubernetes.io/rewrite-target

重寫Path,支援擷取的群組(Capture Group)。配置樣本請參見配置URL重新導向的路由服務

nginx.ingress.kubernetes.io/upstream-vhost

重寫Host。

以下是Rewrite重寫Host配置樣本,將請求example.com/test在轉寄至後端服務之前,重寫為test.com/test。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/upstream-vhost: "test.com"
  name: demo
spec:
  ingressClassName: nginx
  rules:
    - host: example.com
      http:
        paths:
          - backend:
              service:
                name: demo-service
                port: 
                  number: 80
            path: /test
            pathType: ImplementationSpecific

限流

為了確保服務的穩定性,可以通過配置限流策略來控制每個用戶端IP的請求頻率和並發串連數。以下是相關的註解及其說明:

註解

描述

nginx.ingress.kubernetes.io/limit-connections

單個IP地址允許的最大並發串連數。超過此限制的請求會返回503錯誤。

nginx.ingress.kubernetes.io/limit-rate

每秒允許發送到單個串連的最大KB數。設定為零禁用速率限制。需要啟用代理緩衝才能使用此功能。

nginx.ingress.kubernetes.io/limit-whitelist

從速率限制中排除的用戶端IP位址範圍,格式為逗號分隔的CIDR列表。

nginx.ingress.kubernetes.io/limit-rpm

每分鐘從單個IP地址接收的最大請求數。突發限制設定為此限制乘以突發乘數(預設乘數為5)。超出限值後將返回limit-req-status-code(預設值為503)。

nginx.ingress.kubernetes.io/limit-rps

每秒從單個IP地址接收的最大請求數。突發限制設定為此限制乘以突發乘數(預設乘數為5)。超出限值後返回limit-req-status-code(預設值為503)。

nginx.ingress.kubernetes.io/limit-burst-multiplier

指定突發請求數量的乘數。預設突發乘數為5,該註解用於覆蓋預設乘數。

以下是限流配置樣本。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-nginx
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/limit-rate: "100K"
    nginx.ingress.kubernetes.io/limit-whitelist: "10.1.10.100"
    nginx.ingress.kubernetes.io/limit-rps: "1"
    nginx.ingress.kubernetes.io/limit-rpm: "30"
spec:
  rules:
  - host: iphone.example.com 
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: iphone-backend-svc
            port:
              number: 80

容災

為了確保服務的高可用性和穩定性,Nginx Ingress提供了容災(Fallback)機制,以處理服務節點不可用或特定錯誤響應的情況。以下是關於相關註解的說明:

註解

描述

nginx.ingress.kubernetes.io/default-backend

容災服務。當Ingress定義的服務沒有可用節點時,請求會自動轉寄到該容災服務。

您可以通過組件管理的Nginx Ingress的組件中進行全域配置。

nginx.ingress.kubernetes.io/custom-http-errors

該註解和default-backend一起工作。當後端服務返回指定HTTP響應碼,原始請求會被再次轉寄至容災服務。

重要

轉寄至容災服務時,請求的Path會被重寫為/,該行為與Ingress-nginx保持一致

與ConfigMap中的custom-http-errors配置相同,此註解將設定Nginx proxy-intercept-errors,僅對於與此Ingress關聯的NGINX路徑有效。

不同的Ingress可以為其各自的服務指定不同的錯誤碼集合。如果同時在全域和註解中指定custom-http-errors,此註解中的錯誤碼設定將覆蓋全域設定,針對相應Ingress的主機名稱和路徑生效。

灰階發布

灰階發布和藍綠髮布是廣泛採用的策略,以確保應用的平滑升級和高可用性。通過以下注釋配置可以實現靈活的流量管理,從而滿足不同發布需求。更多詳情請參見通過Nginx Ingress實現灰階發布和藍綠髮布

註解

描述

nginx.ingress.kubernetes.io/canary

開啟或關閉灰階發布。

nginx.ingress.kubernetes.io/canary-by-header

基於Request Header Key 流量切分。

nginx.ingress.kubernetes.io/canary-by-header-value

基於Request Header Value 流量切分,Value為精確匹配。

nginx.ingress.kubernetes.io/canary-by-header-pattern

基於Request Header Value 流量切分,Value為正則匹配。

nginx.ingress.kubernetes.io/canary-by-cookie

基於Request Cookie Key 流量切分。

nginx.ingress.kubernetes.io/canary-weight

基於權重流量切分。

nginx.ingress.kubernetes.io/canary-weight-total

權重總和。

逾時相關配置

以下是Ingress Nginx的逾時配置選項,包括全域逾時配置和特定資源的自訂逾時設定。使用合適的配置可以最佳化串連效能和可靠性。

  • 全域逾時配置

    通過kubectl edit cm -n kube-system nginx-configuration命令,編輯以下配置項配置全域逾時。

    配置項

    描述

    取實值型別

    預設值

    nginx.ingress.kubernetes.io/proxy-connect-timeout

    設定與Proxy 伺服器建立串連的逾時時間,單位為秒(s)。

    int

    nginx.ingress.kubernetes.io/proxy-connect-timeout: "5"

    建議不超過75

    nginx.ingress.kubernetes.io/proxy-read-timeout

    設定從Proxy 伺服器讀取響應的逾時。該逾時僅在兩個連續的讀取操作之間設定,而不是為整個響應的傳輸設定,單位為秒(s)。

    int

    nginx.ingress.kubernetes.io/proxy-read-timeout: "60"

    nginx.ingress.kubernetes.io/proxy-send-timeout

    設定向Proxy 伺服器傳輸請求的逾時。該逾時只在兩個連續的寫操作之間設定,而不是為整個請求的傳輸設定,單位為秒(s)。

    int

    nginx.ingress.kubernetes.io/proxy-send-timeout: "60"

    nginx.ingress.kubernetes.io/proxy-stream-next-upstream-timeout

    限制允許將串連傳遞到下一個伺服器的時間,設定為0s則關閉此限制。

    string

    nginx.ingress.kubernetes.io/proxy-stream-next-upstream-timeout: "600s"

    nginx.ingress.kubernetes.io/proxy-stream-timeout

    設定用戶端或Proxy 伺服器串連上兩個連續的讀或寫操作之間的逾時時間。如果在這個時間內沒有資料轉送,串連就會關閉。

    string

    nginx.ingress.kubernetes.io/proxy-stream-timeout: "600s"

    nginx.ingress.kubernetes.io/upstream-keepalive-timeout

    設定一個逾時時間,在這個時間內,與上遊伺服器的空閑串連將保持開放,單位為秒(s)。

    int

    nginx.ingress.kubernetes.io/upstream-keepalive-timeout: "900"

    nginx.ingress.kubernetes.io/worker-shutdown-timeout

    設定優雅停機的逾時時間。

    string

    nginx.ingress.kubernetes.io/worker-shutdown-timeout: "240s"

    nginx.ingress.kubernetes.io/proxy-protocol-header-timeout

    設定接收代理協議標頭檔的逾時值。預設的5秒可以防止TLS直通處理常式無限期地等待一個中斷的串連。

    string

    nginx.ingress.kubernetes.io/proxy-protocol-header-timeout: "5s"

    nginx.ingress.kubernetes.io/ssl-session-timeout

    設定 SSL 會話緩衝中的會話參數的有效時間。會話到期時間是相對於建立時間而言的。每個會話緩衝會佔用大約0.25MB的空間。

    string

    nginx.ingress.kubernetes.io/ssl-session-timeout: "10m"

    nginx.ingress.kubernetes.io/client-body-timeout

    定義讀取用戶端請求本文的逾時,單位為秒(s)。

    int

    nginx.ingress.kubernetes.io/client-body-timeout: "60"

    nginx.ingress.kubernetes.io/client-header-timeout

    定義讀取用戶端要求標頭的逾時,單位為秒(s)。

    int

    nginx.ingress.kubernetes.io/client-header-timeout: "60"

  • 特定資源自訂逾時配置

    以下是特定資源自訂逾時配置注釋,以及相關的參數配置。

    配置項

    描述

    nginx.ingress.kubernetes.io/proxy-connect-timeout

    設定代理連線逾時時間。

    nginx.ingress.kubernetes.io/proxy-send-timeout

    設定代理髮送逾時時間。

    nginx.ingress.kubernetes.io/proxy-read-timeout

    設定代理讀取逾時時間。

    nginx.ingress.kubernetes.io/proxy-request-buffering

    是否啟用請求緩衝功能。

    • on啟用請求緩衝。如果啟用了請求緩衝功能,則會在接收到完整的請求資料之後才將其轉寄到後端工作負載,否則可能會在接收到部分請求資料時就開始轉寄請求。HTTP/1.1 Chunked編碼的請求不受此參數限制,始終會進行緩衝。

    • off則禁用請求緩衝。如果禁用,發送過程中出現發送錯誤,就不會選擇下一個工作負載進行重試。

跨域

在Nginx Ingress 控制器中設定跨域資源共用(CORS)可以協助你控制何種資源可以被跨域訪問。更多詳情請參見Nginx Ingress跨網域設定

註解

描述

nginx.ingress.kubernetes.io/enable-cors

開啟或關閉跨域。

nginx.ingress.kubernetes.io/cors-allow-origin

允許的第三方網站。

nginx.ingress.kubernetes.io/cors-allow-methods

允許的要求方法,如GET、POST、PUT等。

nginx.ingress.kubernetes.io/cors-allow-headers

允許的請求Header。

nginx.ingress.kubernetes.io/cors-expose-headers

允許的暴露給瀏覽器的響應Header。

nginx.ingress.kubernetes.io/cors-allow-credentials

是否允許攜帶憑證資訊。

nginx.ingress.kubernetes.io/cors-max-age

預檢結果的最大緩衝時間。

重試邏輯

以下用於配置請求重試邏輯的註解。配置這些註解可以協助提升服務的高可用性和容錯能力。

註解

描述

nginx.ingress.kubernetes.io/proxy-next-upstream-tries

如果滿足重試條件,則可用重試次數,預設值為3。

nginx.ingress.kubernetes.io/proxy-next-upstream-timeout

請求重試的逾時時間,單位秒。預設未配置逾時時間。

nginx.ingress.kubernetes.io/proxy-next-upstream

配置重試策略或者重試條件,可以使用多個組合用空格分隔,例如設定為http_500http_502、支援下列策略:

  • error:串連失敗,直接返回。

  • timeout:連線逾時,直接返回。

  • invalid_response:無效返回狀態代碼,直接返回。

  • http_xxx:xxx可以替換為狀態代碼,例如設定為http_500的含義是上遊返回500時選擇下一個工作負載。支援的狀態代碼為:500、502、503、504、403、404、429。

  • off:關閉重試機制,不論任何錯誤都直接返回。

IP存取控制

通過以下註解配置Nginx Ingress中的IP黑白名單。

註解

描述

nginx.ingress.kubernetes.io/whitelist-source-range

IP白名單,支援IP地址或CIDR地址塊,以英文半形逗號(,)分隔。

nginx.ingress.kubernetes.io/denylist-source-range

IP黑名單,支援IP地址或CIDR地址塊,以英文半形逗號(,)分隔。

以下是配置IP白名單注釋樣本。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-nginx
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/whitelist-source-range: "10.1.10.2"
spec:
  rules:
  - host: iphone.exmaple.com 
    http:
      paths:
      - path: /
        pathType: Prefix 
        backend:backend:
          service:
            name: iphone-example-svc
            port:
              number: 80

您還可以使用命令kubectl edit cm -n kube-system nginx-configuration通過編輯配置中的whitelist-source-range 來進行全域設定。

流量鏡像

通過配置以下注釋,您可以實現對應用的流量複製。可以在不影響生產環境的情況下協助您識別潛在的問題,提高應用的穩定性。配置詳情參見通過Nginx Ingress實現應用流量複製

註解

描述

nginx.ingress.kubernetes.io/mirror-target

指定流量目標地址。

支援Service或外部地址,例如,您可以設定為https://test.env.com/$request_uri,其中$request_uri 代表將原始請求的URI添加到目標URL的末尾。

nginx.ingress.kubernetes.io/mirror-request-body

是否鏡像請求流量的Body。

nginx.ingress.kubernetes.io/mirror-host

指定用於轉寄請求Host資訊。

安全防護

為了在用戶端與網關之間的通訊中提供更高的安全性,以下註解可以加強通訊加密。更多詳情請參見Nginx Ingress Controller安全加密

  • 用戶端與網關之間的通訊加密

    通過以下註解來加強用戶端與網關之間的通訊安全性。

    註解

    範圍

    描述

    nginx.ingress.kubernetes.io/ssl-cipher

    網域名稱

    指定TLS的加密套件,可以指定多個(TLS的加密套件之間使用英文冒號分隔),僅當TLS握手時採用TLSv1.0-1.2生效。預設加密套件如下:

    • ECDHE-ECDSA-AES128-GCM-SHA256

    • ECDHE-RSA-AES128-GCM-SHA256

    • ECDHE-ECDSA-AES128-SHA

    • ECDHE-RSA-AES128-SHA

    • AES128-GCM-SHA256

    • AES128-SHA

    • ECDHE-ECDSA-AES256-GCM-SHA384

    • ECDHE-RSA-AES256-GCM-SHA384

    • ECDHE-ECDSA-AES256-SHA

    • ECDHE-RSA-AES256-SHA

    • AES256-GCM-SHA384

    • AES256-SHA

    nginx.ingress.kubernetes.io/auth-tls-secret

    網域名稱

    網關使用的CA認證,用於驗證mTLS握手期間,用戶端提供的認證。該註解主要應用於網關需要驗證用戶端身份的情境。

    對應的Secret中必須包含一個名為ca.crt的檔案。ca.crt檔案應包含完整的憑證授權單位鏈。

  • 網關與後端服務之間通訊加密

    通過以下註解來加強網關與後端服務之間的通訊安全性。

    註解

    範圍

    描述

    nginx.ingress.kubernetes.io/proxy-ssl-secret

    服務

    網關使用的用戶端認證,用於後端服務對網關進行身份認證。

    該配置必須使用PEM格式的認證。

    • Secret中必須包含以下檔案:

      • tls.crt: 用戶端認證。

      • tls.key: 用戶端認證的密鑰。

      • ca.crt: 信任的CA認證,用於驗證代理HTTPS伺服器的認證。

    • 注釋的取值格式必須為"namespace/secretName"

    nginx.ingress.kubernetes.io/proxy-ssl-name

    服務

    TLS握手期間使用的SNI。

    nginx.ingress.kubernetes.io/proxy-ssl-server-name

    服務

    開啟或關閉在TLS握手期間使用SNI。

安全認證

以下是有關Basic認證的注釋,確保只有授權使用者才能訪問應用程式介面。

註解

範圍

描述

nginx.ingress.kubernetes.io/auth-type

Ingress

認證類型,支援basic

nginx.ingress.kubernetes.io/auth-secret

Ingress

Secret名字,格式支援namespace/secretName,包含被授予能夠訪問該Ingress上定義的路由的存取權限的使用者名稱和密碼。

nginx.ingress.kubernetes.io/auth-secret-type

Ingress

Secret內容格式。

  • auth-file:Data的Key為auth,Value為使用者名稱和密碼,多帳號用斷行符號分隔。

  • auth-map:Data的Key為使用者名稱,Value為密碼。

nginx.ingress.kubernetes.io/auth-realm

Ingress

保護域。相同的保護域共用使用者名稱和密碼。

配置樣本:

  1. 使用htpasswd命令列工具產生密碼檔案。

    htpasswd -c auth joker

    查看產生的密碼檔案。

    cat auth 
    # 輸出樣本: joker:$apr1$R.G4krs/$hh0mX8xe4A3lYKMjvlVs1/
  2. 將產生的密碼檔案建立為Secret:

    kubectl create secret generic basic-auth --from-file=auth 
  3. 在Ingress資源中應用Basic認證,配置樣本如下:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ingress-nginx
      annotations:
        kubernetes.io/ingress.class: "nginx"
        nginx.ingress.kubernetes.io/auth-type: basic
        nginx.ingress.kubernetes.io/auth-secret: basic-auth      
    spec:
      rules:
      - host: iphone.exmaple.com 
        http:
          paths:
          - path: /
            pathType: Prefix 
            backend:backend:
              service:
                name: iphone-backend-svc
                port:
                  number: 80