Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Ingress NGINX会删除我的响应头_Nginx_Asp.net Web Api_Kubernetes_Kubernetes Ingress - Fatal编程技术网

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

为什么Ingress NGINX会删除我的响应头,nginx,asp.net-web-api,kubernetes,kubernetes-ingress,Nginx,Asp.net Web Api,Kubernetes,Kubernetes Ingress,我有一个ASP.NET WebApi项目,它会在每个请求上返回安全标头: 当我在Kubernetes集群中使用Ingress NGINX运行此应用程序时,我的头丢失了 如何配置NGINX以使用应用程序中的响应头?为什么Ingress NGINX会删除我的响应头 我没有任何NGINX配置的经验。请建议如何在k8s集群中执行此操作。谢谢在入口中使用以下注释来设置响应标题 nginx.ingress.kubernetes.io/configuration-snippet: |

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

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

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


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

在入口中使用以下注释来设置响应标题

    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";

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

  • 创建一个文件并将其命名为
    customheaders.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。应用此配置映射:
    kubectl应用-f自定义标题.yml

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

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


    使用以下命令检查您的配置:
    kubectl exec-n ingres nginx cat/etc/nginx/nginx.conf

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


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

    是否可以使用我的应用程序中的标题?我有很多入口,我不能为每个入口都设置。我的应用程序已经返回了我需要的标题,为什么nginx要删除它?你能确保你的nginx控制器使用你创建的这个配置映射吗?是的,它正在使用中。因为当我添加“服务器令牌”:“false”时,服务器头就消失了。我认为响应不会通过入口控制器。你的后端也是nginx?这只适用于输入请求,我需要添加响应标题小心回答“我没有尝试过”。这里的一些人建议牺牲时间来测试提出的答案。有些人恶意地做同样的事情。这两类人都倾向于否决非工作的未经测试的答案。一些未经测试的答案——有效与否。@Yunnosch感谢您的建议,它引出了新的观点。在回复之前,我从未想过这一点。这似乎只会影响查看文档的
    服务器
    标题。。。
    
    data:
        allow-backend-server: "true"