Nginx to Higress Annotation Compatibility
⚠️ Important: Do NOT Modify Your Ingress Resources!
Higress natively supports nginx.ingress.kubernetes.io/* annotations - no conversion or modification needed!
The Higress controller uses ParseStringASAP() which first tries nginx.ingress.kubernetes.io/* prefix, then falls back to higress.io/*. Your existing Ingress resources work as-is with Higress.
Fully Compatible Annotations (Work As-Is)
These nginx annotations work directly with Higress without any changes:
| nginx annotation (keep as-is) |
Higress also accepts |
Notes |
nginx.ingress.kubernetes.io/rewrite-target |
higress.io/rewrite-target |
Supports capture groups |
nginx.ingress.kubernetes.io/use-regex |
higress.io/use-regex |
Enable regex path matching |
nginx.ingress.kubernetes.io/ssl-redirect |
higress.io/ssl-redirect |
Force HTTPS |
nginx.ingress.kubernetes.io/force-ssl-redirect |
higress.io/force-ssl-redirect |
Same behavior |
nginx.ingress.kubernetes.io/backend-protocol |
higress.io/backend-protocol |
HTTP/HTTPS/GRPC |
nginx.ingress.kubernetes.io/proxy-body-size |
higress.io/proxy-body-size |
Max body size |
CORS
| nginx annotation |
Higress annotation |
nginx.ingress.kubernetes.io/enable-cors |
higress.io/enable-cors |
nginx.ingress.kubernetes.io/cors-allow-origin |
higress.io/cors-allow-origin |
nginx.ingress.kubernetes.io/cors-allow-methods |
higress.io/cors-allow-methods |
nginx.ingress.kubernetes.io/cors-allow-headers |
higress.io/cors-allow-headers |
nginx.ingress.kubernetes.io/cors-expose-headers |
higress.io/cors-expose-headers |
nginx.ingress.kubernetes.io/cors-allow-credentials |
higress.io/cors-allow-credentials |
nginx.ingress.kubernetes.io/cors-max-age |
higress.io/cors-max-age |
Timeout & Retry
| nginx annotation |
Higress annotation |
nginx.ingress.kubernetes.io/proxy-connect-timeout |
higress.io/proxy-connect-timeout |
nginx.ingress.kubernetes.io/proxy-send-timeout |
higress.io/proxy-send-timeout |
nginx.ingress.kubernetes.io/proxy-read-timeout |
higress.io/proxy-read-timeout |
nginx.ingress.kubernetes.io/proxy-next-upstream-tries |
higress.io/proxy-next-upstream-tries |
Canary (Grayscale)
| nginx annotation |
Higress annotation |
nginx.ingress.kubernetes.io/canary |
higress.io/canary |
nginx.ingress.kubernetes.io/canary-weight |
higress.io/canary-weight |
nginx.ingress.kubernetes.io/canary-header |
higress.io/canary-header |
nginx.ingress.kubernetes.io/canary-header-value |
higress.io/canary-header-value |
nginx.ingress.kubernetes.io/canary-header-pattern |
higress.io/canary-header-pattern |
nginx.ingress.kubernetes.io/canary-by-cookie |
higress.io/canary-by-cookie |
Authentication
| nginx annotation |
Higress annotation |
nginx.ingress.kubernetes.io/auth-type |
higress.io/auth-type |
nginx.ingress.kubernetes.io/auth-secret |
higress.io/auth-secret |
nginx.ingress.kubernetes.io/auth-realm |
higress.io/auth-realm |
Load Balancing
| nginx annotation |
Higress annotation |
nginx.ingress.kubernetes.io/load-balance |
higress.io/load-balance |
nginx.ingress.kubernetes.io/upstream-hash-by |
higress.io/upstream-hash-by |
IP Access Control
| nginx annotation |
Higress annotation |
nginx.ingress.kubernetes.io/whitelist-source-range |
higress.io/whitelist-source-range |
nginx.ingress.kubernetes.io/denylist-source-range |
higress.io/denylist-source-range |
Redirect
| nginx annotation |
Higress annotation |
nginx.ingress.kubernetes.io/permanent-redirect |
higress.io/permanent-redirect |
nginx.ingress.kubernetes.io/temporal-redirect |
higress.io/temporal-redirect |
nginx.ingress.kubernetes.io/permanent-redirect-code |
higress.io/permanent-redirect-code |
| nginx annotation |
Higress annotation |
nginx.ingress.kubernetes.io/proxy-set-headers |
higress.io/proxy-set-headers |
nginx.ingress.kubernetes.io/proxy-hide-headers |
higress.io/proxy-hide-headers |
nginx.ingress.kubernetes.io/proxy-pass-headers |
higress.io/proxy-pass-headers |
Upstream TLS
| nginx annotation |
Higress annotation |
nginx.ingress.kubernetes.io/proxy-ssl-secret |
higress.io/proxy-ssl-secret |
nginx.ingress.kubernetes.io/proxy-ssl-verify |
higress.io/proxy-ssl-verify |
TLS Protocol & Cipher Control
Higress provides fine-grained TLS control via dedicated annotations:
| nginx annotation |
Higress annotation |
Notes |
nginx.ingress.kubernetes.io/ssl-protocols |
(see below) |
Use Higress-specific annotations |
Higress TLS annotations (no nginx equivalent - use these directly):
| Higress annotation |
Description |
Example value |
higress.io/tls-min-protocol-version |
Minimum TLS version |
TLSv1.2 |
higress.io/tls-max-protocol-version |
Maximum TLS version |
TLSv1.3 |
higress.io/ssl-cipher |
Allowed cipher suites |
ECDHE-RSA-AES128-GCM-SHA256 |
Example: Restrict to TLS 1.2+
Example: Custom cipher suites
Unsupported Annotations (Require WASM Plugin)
These annotations have no direct Higress equivalent and require custom WASM plugins:
Configuration Snippets
Lua Scripting
ModSecurity
Rate Limiting (Complex)
Other Unsupported
Migration Script
Use this script to analyze Ingress annotations: