我有ASP.NET WebApi项目,该项目在每个请求上返回安全标头:
当我使用Ingress NGINX在Kubernetes集群中运行此应用程序时,我的标头丢失了
如何配置NGINX以使用应用程序中的响应头?为什么Ingress NGINX会删除我的响应标头?
我对NGINX的配置没有任何经验。请建议如何在k8s集群中执行此操作。谢谢
答案 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入口控制器流出的。要添加一些自定义标题,可以使用以下给定步骤。
创建一个文件并将其命名为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)
我自己还没有尝试过,但是我认为您需要启用此设置。
data:
allow-backend-server: "true"
您可以尝试通过注释启用此设置。