Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .yamllint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ rules:
check-multi-line-strings: true
ignore: |
operators/**/*
examples/proxy-settings-policy/app.yaml
key-duplicates: enable
key-ordering: disable
line-length:
Expand Down
2 changes: 2 additions & 0 deletions charts/nginx-gateway-fabric/templates/clusterrole.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ rules:
- clientsettingspolicies
- observabilitypolicies
- upstreamsettingspolicies
- proxysettingspolicies
{{- if .Values.nginxGateway.snippetsFilters.enable }}
- snippetsfilters
{{- end }}
Expand All @@ -142,6 +143,7 @@ rules:
- clientsettingspolicies/status
- observabilitypolicies/status
- upstreamsettingspolicies/status
- proxysettingspolicies/status
{{- if .Values.nginxGateway.snippetsFilters.enable }}
- snippetsfilters/status
{{- end }}
Expand Down
2 changes: 2 additions & 0 deletions deploy/azure/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ rules:
- clientsettingspolicies
- observabilitypolicies
- upstreamsettingspolicies
- proxysettingspolicies
verbs:
- list
- watch
Expand All @@ -179,6 +180,7 @@ rules:
- clientsettingspolicies/status
- observabilitypolicies/status
- upstreamsettingspolicies/status
- proxysettingspolicies/status
verbs:
- update
- apiGroups:
Expand Down
2 changes: 2 additions & 0 deletions deploy/default/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ rules:
- clientsettingspolicies
- observabilitypolicies
- upstreamsettingspolicies
- proxysettingspolicies
verbs:
- list
- watch
Expand All @@ -179,6 +180,7 @@ rules:
- clientsettingspolicies/status
- observabilitypolicies/status
- upstreamsettingspolicies/status
- proxysettingspolicies/status
verbs:
- update
- apiGroups:
Expand Down
2 changes: 2 additions & 0 deletions deploy/experimental-nginx-plus/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ rules:
- clientsettingspolicies
- observabilitypolicies
- upstreamsettingspolicies
- proxysettingspolicies
verbs:
- list
- watch
Expand All @@ -181,6 +182,7 @@ rules:
- clientsettingspolicies/status
- observabilitypolicies/status
- upstreamsettingspolicies/status
- proxysettingspolicies/status
verbs:
- update
- apiGroups:
Expand Down
2 changes: 2 additions & 0 deletions deploy/experimental/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ rules:
- clientsettingspolicies
- observabilitypolicies
- upstreamsettingspolicies
- proxysettingspolicies
verbs:
- list
- watch
Expand All @@ -181,6 +182,7 @@ rules:
- clientsettingspolicies/status
- observabilitypolicies/status
- upstreamsettingspolicies/status
- proxysettingspolicies/status
verbs:
- update
- apiGroups:
Expand Down
2 changes: 2 additions & 0 deletions deploy/inference-nginx-plus/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ rules:
- clientsettingspolicies
- observabilitypolicies
- upstreamsettingspolicies
- proxysettingspolicies
verbs:
- list
- watch
Expand All @@ -179,6 +180,7 @@ rules:
- clientsettingspolicies/status
- observabilitypolicies/status
- upstreamsettingspolicies/status
- proxysettingspolicies/status
verbs:
- update
- apiGroups:
Expand Down
2 changes: 2 additions & 0 deletions deploy/inference/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ rules:
- clientsettingspolicies
- observabilitypolicies
- upstreamsettingspolicies
- proxysettingspolicies
verbs:
- list
- watch
Expand All @@ -179,6 +180,7 @@ rules:
- clientsettingspolicies/status
- observabilitypolicies/status
- upstreamsettingspolicies/status
- proxysettingspolicies/status
verbs:
- update
- apiGroups:
Expand Down
2 changes: 2 additions & 0 deletions deploy/nginx-plus/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ rules:
- clientsettingspolicies
- observabilitypolicies
- upstreamsettingspolicies
- proxysettingspolicies
verbs:
- list
- watch
Expand All @@ -179,6 +180,7 @@ rules:
- clientsettingspolicies/status
- observabilitypolicies/status
- upstreamsettingspolicies/status
- proxysettingspolicies/status
verbs:
- update
- apiGroups:
Expand Down
2 changes: 2 additions & 0 deletions deploy/nodeport/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ rules:
- clientsettingspolicies
- observabilitypolicies
- upstreamsettingspolicies
- proxysettingspolicies
verbs:
- list
- watch
Expand All @@ -179,6 +180,7 @@ rules:
- clientsettingspolicies/status
- observabilitypolicies/status
- upstreamsettingspolicies/status
- proxysettingspolicies/status
verbs:
- update
- apiGroups:
Expand Down
2 changes: 2 additions & 0 deletions deploy/openshift/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ rules:
- clientsettingspolicies
- observabilitypolicies
- upstreamsettingspolicies
- proxysettingspolicies
verbs:
- list
- watch
Expand All @@ -179,6 +180,7 @@ rules:
- clientsettingspolicies/status
- observabilitypolicies/status
- upstreamsettingspolicies/status
- proxysettingspolicies/status
verbs:
- update
- apiGroups:
Expand Down
2 changes: 2 additions & 0 deletions deploy/snippets-filters-nginx-plus/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ rules:
- clientsettingspolicies
- observabilitypolicies
- upstreamsettingspolicies
- proxysettingspolicies
- snippetsfilters
verbs:
- list
Expand All @@ -180,6 +181,7 @@ rules:
- clientsettingspolicies/status
- observabilitypolicies/status
- upstreamsettingspolicies/status
- proxysettingspolicies/status
- snippetsfilters/status
verbs:
- update
Expand Down
2 changes: 2 additions & 0 deletions deploy/snippets-filters/deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ rules:
- clientsettingspolicies
- observabilitypolicies
- upstreamsettingspolicies
- proxysettingspolicies
- snippetsfilters
verbs:
- list
Expand All @@ -180,6 +181,7 @@ rules:
- clientsettingspolicies/status
- observabilitypolicies/status
- upstreamsettingspolicies/status
- proxysettingspolicies/status
- snippetsfilters/status
verbs:
- update
Expand Down
3 changes: 3 additions & 0 deletions examples/proxy-settings-policy/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Proxy Settings Policy

This directory contains the YAML files used in the [ProxySettingsPolicy](https://docs.nginx.com/nginx-gateway-fabric/traffic-management/proxy-settings/) guide.
154 changes: 154 additions & 0 deletions examples/proxy-settings-policy/app.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: response-generator
data:
main.go: |
package main

import (
"fmt"
"log"
"net/http"
"strings"
"time"
)

func coffeeHandler(w http.ResponseWriter, r *http.Request) {
// Returns a large response to demonstrate buffering requirements
// This generates a response larger than NGINX's default proxy_buffer_size (4k/8k)
// Without proper buffering configuration, this may cause errors
w.Header().Set("Content-Type", "text/plain")
w.Header().Set("X-Content-Type-Options", "nosniff")

// Generate a large header that exceeds default proxy_buffer_size
// Default is typically 4k-8k depending on platform
largeHeader := strings.Repeat("X", 10000)
w.Header().Set("X-Large-Header", largeHeader)

flusher, ok := w.(http.Flusher)
if !ok {
http.Error(w, "Streaming unsupported", http.StatusInternalServerError)
return
}

// Generate a large response body (5MB in chunks)
// This tests both proxy_buffer_size and proxy_buffers settings
chunkSize := 1024 // 1KB chunks
totalChunks := 5120 // 5MB total

for i := 0; i < totalChunks; i++ {
chunk := fmt.Sprintf("Coffee chunk %d: %s\n", i, strings.Repeat("x", chunkSize-20))
fmt.Fprint(w, chunk)
if i%10 == 0 {
flusher.Flush()
}
time.Sleep(100 * time.Microsecond) // Small delay to simulate slow backend
}
}

func healthHandler(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
fmt.Fprint(w, "OK")
}

func main() {
http.HandleFunc("/coffee", coffeeHandler)
http.HandleFunc("/health", healthHandler)

log.Println("Server starting on :8080")
if err := http.ListenAndServe(":8080", nil); err != nil {
log.Fatal(err)
}
}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: coffee
spec:
replicas: 1
selector:
matchLabels:
app: coffee
template:
metadata:
labels:
app: coffee
spec:
containers:
- name: coffee
image: golang:1.25-alpine
command: ["/bin/sh"]
args:
- -c
- |
cd /app
go run main.go
ports:
- containerPort: 8080
volumeMounts:
- name: app
mountPath: /app
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
readinessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
volumes:
- name: app
configMap:
name: response-generator
---
apiVersion: v1
kind: Service
metadata:
name: coffee
spec:
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: http
selector:
app: coffee
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: tea
spec:
replicas: 1
selector:
matchLabels:
app: tea
template:
metadata:
labels:
app: tea
spec:
containers:
- name: tea
image: nginxdemos/nginx-hello:plain-text
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: tea
spec:
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: http
selector:
app: tea
19 changes: 19 additions & 0 deletions examples/proxy-settings-policy/coffee-proxy-settings.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
apiVersion: gateway.nginx.org/v1alpha1
kind: ProxySettingsPolicy
metadata:
name: coffee-proxy-settings
spec:
targetRefs:
- group: gateway.networking.k8s.io
kind: HTTPRoute
name: coffee
buffering:
# Increase buffer size to handle large response headers (>10KB)
bufferSize: "16k"
# Configure more and larger buffers to handle 5MB response body
buffers:
number: 16
size: "64k"
# Set busy buffers size to allow more data to be sent to client
# while still receiving from upstream
busyBuffersSize: "128k"
15 changes: 15 additions & 0 deletions examples/proxy-settings-policy/gateway-proxy-settings.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
apiVersion: gateway.nginx.org/v1alpha1
kind: ProxySettingsPolicy
metadata:
name: gateway-proxy-settings
spec:
targetRefs:
- group: gateway.networking.k8s.io
kind: Gateway
name: gateway
buffering:
bufferSize: "4k"
buffers:
number: 8
size: "4k"
busyBuffersSize: "16k"
Loading
Loading