Filters
This page contains examples demonstrating filters in Gateway API for modifying requests and responses. Filters provide powerful capabilities for URL rewriting, header modification, and redirects.
Filters in Gateway API
Filters allow you to modify requests before they reach backends and responses before they reach clients. This replaces Nginx Ingress annotations with native, portable filter types.
Examples
URL Rewriting
Rewrites request paths before forwarding to backend. Replaces the nginx.ingress.kubernetes.io/rewrite-target annotation.
Key Points:
- Use
URLRewritefilter withReplacePrefixMatchtype - Strips or replaces path prefixes
- Useful for API versioning and path migrations
- More flexible than Nginx Ingress rewrite-target annotation
Common Use Cases:
- Strip
/apiprefix:/api/users→/users - Path migrations:
/old-api→/new-api - Version routing:
/v1/api→/api
Header Modification
Modifies headers before forwarding (request) and before responding (response). Supports add, set, and remove operations.
Key Points:
- RequestHeaderModifier: Modify headers before forwarding to backend
- ResponseHeaderModifier: Modify headers before responding to client
- Operations:
add(add new),set(overwrite),remove(delete) - Useful for adding metadata, security headers, and debugging
Common Use Cases:
- Add API version headers
- Set security headers (CORS, CSP)
- Remove sensitive headers
- Add request tracing headers
Redirects
Redirects requests to a different URL. Useful for HTTP to HTTPS redirects, domain migrations, and path changes.
Key Points:
- Use
RequestRedirectfilter - Supports permanent (301) and temporary (302) redirects
- Can redirect to different scheme, hostname, or path
- No backend needed for redirect routes
Common Use Cases:
- HTTP to HTTPS redirects
- Domain migrations
- Path changes
- Temporary redirects for maintenance
Ingress Equivalent
For comparison, here's the equivalent Nginx Ingress configuration:
Key Differences:
- Nginx Ingress: Uses annotations (e.g.,
rewrite-target) - Gateway API: Uses native filters (portable, standard)
- Nginx Ingress: Limited options, Nginx-specific
- Gateway API: More expressive, works across implementations
Filter Types
- URLRewrite: Rewrite request paths
- RequestHeaderModifier: Modify request headers
- ResponseHeaderModifier: Modify response headers
- RequestRedirect: Redirect requests
- RequestMirror: Mirror traffic (see traffic splitting examples)
- ExtensionRef: Custom filters (implementation-specific)
Filter Order
Filters are processed in order:
- Request filters (URLRewrite, RequestHeaderModifier)
- Request forwarding to backend
- Response filters (ResponseHeaderModifier)
- Response to client
Best Practices
- Use Filters Sparingly: Only when necessary - prefer backend logic when possible
- Test Thoroughly: Filters can affect request/response flow significantly
- Document Filter Purpose: Add comments explaining why filters are used
- Monitor Performance: Some filters may add latency
- Security Headers: Use ResponseHeaderModifier for security headers (CORS, CSP, etc.)
- Avoid Sensitive Data: Don't add sensitive information in headers
Related Documentation
- Request/Response Modifications Documentation - Detailed explanation of filters
- Core Concepts - Understanding Gateway API fundamentals