J'ai la configuration suivante:
daemonset:
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: nginx-ingress
namespace: nginx-ingress
spec:
selector:
matchLabels:
app: nginx-ingress
template:
metadata:
labels:
app: nginx-ingress
spec:
serviceAccountName: nginx-ingress
containers:
- image: nginx/nginx-ingress:1.4.2-Alpine
imagePullPolicy: Always
name: nginx-ingress
ports:
- name: http
containerPort: 80
hostPort: 80
- name: https
containerPort: 443
hostPort: 443
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
args:
- -nginx-configmaps=$(POD_NAMESPACE)/nginx-config
- -default-server-tls-secret=$(POD_NAMESPACE)/default-server-secret
configuration principale:
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
namespace: nginx-ingress
data:
proxy-set-headers: "nginx-ingress/custom-headers"
proxy-connect-timeout: "11s"
proxy-read-timeout: "12s"
client-max-body-size: "5m"
gzip-level: "7"
use-gzip: "true"
use-geoip2: "true"
en-têtes personnalisés:
apiVersion: v1
kind: ConfigMap
metadata:
name: custom-headers
namespace: nginx-ingress
data:
X-Forwarded-Host-Test: "US"
X-Using-Nginx-Controller: "true"
X-Country-Name: "UK"
Je rencontre les situations suivantes:
Sinon, tout va bien, les journaux du contrôleur montrent que mon seul backend (une application expressJs qui vide les en-têtes) est le serveur correctement, j'obtiens les réponses attendues, etc.
J'ai copié autant que possible à partir des exemples sur github, en faisant un minimum de changements mais aucun résultat (y compris en regardant les exemples d'en-têtes personnalisés).
Toutes les idées ou pointeurs seraient grandement appréciés.
Merci!
Il semble que vous utilisiez kubernetes-ingress de NGINX lui-même au lieu de ingress-nginx qui est le contrôleur d'entrée de communauté nginx.
Si vous voyez les clés ConfigMap prises en charge pour kubernetes-ingress, aucune des options gzip
n'est prise en charge. Si vous voyez options ConfigMap pour ingress-nginx, vous verrez toutes les clés gzip qui peuvent être configurées.
Essayez de passer au contrôleur d'entrée communauté nginx.
Utilisez des annotations de règles d'entrée.
Example:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/configuration-snippet: |
more_set_headers "server: hide";
more_set_headers "X-Content-Type-Options: nosniff";
more_set_headers "X-Frame-Options: DENY";
more_set_headers "X-Xss-Protection: 1";
name: myingress
namespace: default
spec:
tls:
- hosts:
J'ai utilisé le serveur nginx 1.15.9
Pour la postérité: nginx community controller => quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.21.0
nginx kubernetes controller => nginx/nginx-ingress: Edge (comme indiqué dans la documentation)
configmap des en-têtes personnalisés pour la communauté => en-têtes de jeu de proxy: "nginx-ingress/custom-headers"
configmap des en-têtes personnalisés pour kubernetes => add-headers: "nginx-ingress/custom-headers"