为什么Ingress NGINX删除我的响应标头

时间:2020-05-09 21:22:03

标签: nginx asp.net-web-api kubernetes kubernetes-ingress

我有ASP.NET WebApi项目,该项目在每个请求上返回安全标头:

enter image description here

当我使用Ingress NGINX在Kubernetes集群中运行此应用程序时,我的标头丢失了

enter image description here

如何配置NGINX以使用应用程序中的响应头?为什么Ingress NGINX会删除我的响应标头?

我对NGINX的配置没有任何经验。请建议如何在k8s集群中执行此操作。谢谢

3 个答案:

答案 0 :(得分:4)

在入口中使用以下注释设置响应头

    nginx.ingress.kubernetes.io/configuration-snippet: |
      more_set_headers "X-Frame-Options: Deny";
      more_set_headers "X-Xss-Protection: 1; mode=block";
      more_set_headers "X-Content-Type-Options: nosniff";

答案 1 :(得分:0)

您无法找到那些标头,因为流量是从充当代理的nginx入口控制器流出的。要添加一些自定义标题,可以使用以下给定步骤。

  1. 创建一个文件并将其命名为custom-headers.yml,然后添加以下数据。

    apiVersion: v1
    data:
      X-Frame-Options: "Deny"
      X-Xss-Protection: "1; mode=block"
      X-Content-Type-Options: "nosniff"
      kind: ConfigMap
    metadata:
    name: custom-headers
    namespace: ingress-nginx
    

此文件将在ingress-nginx命名空间中创建ConfigMap。应用此ConfigMap: kubectl apply -f custom-headers.yml

现在,我们需要使我们的nginx入口控制器使用此新的ConfigMap。为此,我们需要添加带有到目前为止使用的全局配置的配置映射。为此,创建一个文件configmap.yml并添加以下数据。 apiVersion:v1 数据: 代理设置标题:“ ingress-nginx /自定义标题” 种类:ConfigMap 元数据: 名称:nginx配置 命名空间:ingress-nginx 标签: app.kubernetes.io/名称:ingress-nginx app.kubernetes.io/part-of:ingress-nginx

通过以下方式应用此配置: kubectl apply -f configmap.yml

使用以下命令检查您的配置:kubectl exec <nginx-controller pod name> -n ingress-nginx cat /etc/nginx/nginx.conf

答案 2 :(得分:0)

我自己还没有尝试过,但是我认为您需要启用此设置。

https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#allow-backend-server-header

data:
    allow-backend-server: "true"

您可以尝试通过注释启用此设置。