如何从Kubernetes部署的应用程序中删除服务器头

时间:2020-09-26 07:47:50

标签: kubernetes kubernetes-ingress nginx-ingress

我问的是问题形式,然后回答。

如果您为Helm图表或常规的“ kubectl应用”部署创建了Ingress对象,则在部署到群集后,您可能会在响应中看到服务器标头。这被认为是安全问题。它不应该存在。

enter image description here

您可能无法控制群集或Ingress Controller。如何删除有问题的标题?

1 个答案:

答案 0 :(得分:2)

您可能无法控制您的集群或Ingress Controller,但您确实可以控制自己的Ingress清单。

在每个Ingress清单文件中(可能在Helm图表中),您可以更新Ingress定义。

apiVersion: networking.k8s.io/v1beta1 # for versions before 1.14 use extensions/v1beta1
kind: Ingress
metadata:
  name: {{ .Release.Name}}-{{ .Values.baseName }}-ingress-spa
  namespace: {{ .Values.global.config.namespace }}
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    nginx.ingress.kubernetes.io/configuration-snippet: |
          more_clear_headers "Server";    
spec:
  tls:
  - hosts:

关键部分是:

nginx.ingress.kubernetes.io/configuration-snippet: |
          more_clear_headers "Server";

这指示nginx清除服务器头。重新部署您的应用程序后,您现在应该看到:

enter image description here

瞧,服务器头不见了。