簡體   English   中英

為什么 Ingress NGINX 會刪除我的響應標頭

[英]Why Ingress NGINX removes my response headers

我有 ASP.NET WebApi 項目,它在每個請求上返回安全標頭:

在此處輸入圖像描述

當我在帶有 Ingress NGINX 的 Kubernetes 集群中運行此應用程序時,我的標頭丟失了

在此處輸入圖像描述

如何配置 NGINX 以使用來自我的應用程序的響應標頭? 為什么 Ingress NGINX 會刪除我的響應標頭?

我對 NGINX 配置沒有任何經驗。 請建議如何在 k8s 集群中執行此操作。 謝謝

在入口中使用以下注釋來設置響應 header

    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 入口 controller。 要添加一些自定義標題,您可以使用以下給定步驟。

  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 入口 controller 使用這個新的 ConfigMap。 為此,我們需要將我們的配置 map 添加到目前使用的全局配置中。 為此創建一個文件 configmap.yml 並添加以下數據。 apiVersion:v1 數據:proxy-set-headers:“ingress-nginx/custom-headers”種類:ConfigMap 元數據:名稱:nginx-configuration 命名空間:ingress-nginx 標簽:app.kubernetes.io/name: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

我自己沒有嘗試過,但我認為您需要啟用此設置。

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

data:
    allow-backend-server: "true"

您可以嘗試通過注釋啟用此設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM