为什么Ingress NGINX会删除我的响应头
我有一个ASP.NET WebApi项目,它会在每个请求上返回安全标头: 当我在Kubernetes集群中使用Ingress NGINX运行此应用程序时,我的头丢失了 如何配置NGINX以使用应用程序中的响应头?为什么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: |
我没有任何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
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"