Kubernetes nginx入口-阻止具有错误主机头的请求

Kubernetes nginx入口-阻止具有错误主机头的请求,nginx,kubernetes,Nginx,Kubernetes,我有一个Django应用程序在Kubernetes上的Nginx ingress后面运行。我希望阻止使用错误主机头发送的请求(这些请求希望进行主机头攻击/缓存中毒) 要在Nginx层阻止这些请求,我知道我可以添加一个带有default\u server参数的服务器块,如下所述 但是,我不知道如何通过externalingress yaml在Kubernetes中实现这一点。我遇到了这个似乎相关的问题,但无法解决。您可以通过两种方式来实现:通过服务器代码片段或覆盖现有的Nginx入口控制器 文档中

我有一个Django应用程序在Kubernetes上的Nginx ingress后面运行。我希望阻止使用错误主机头发送的请求(这些请求希望进行主机头攻击/缓存中毒)

要在Nginx层阻止这些请求,我知道我可以添加一个带有
default\u server
参数的服务器块,如下所述


但是,我不知道如何通过externalingress yaml在Kubernetes中实现这一点。我遇到了这个似乎相关的问题,但无法解决。

您可以通过两种方式来实现:通过
服务器代码片段或覆盖现有的Nginx入口控制器

文档中的示例,如何通过
服务器代码段
注释更新底层
nginx入口控制器
Pod的相关
nginx.conf
文件中的服务器配置块:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/server-snippet: |
        set $agentflag 0;

        if ($http_user_agent ~* "(Mobile)" ){
          set $agentflag 1;
        }

        if ( $agentflag = 1 ) {
          return 301 https://m.example.com;
        }
ConfigMap还需要
server snippet
参数,以便将配置传播到
nginx入口控制器
Pod:

kind: ConfigMap
apiVersion: v1
metadata:
  name: ingress-nginx-ingress-controller
  namespace: ingress-nginx
data:
  server-snippet: |
    set $agentflag 0;

        if ($http_user_agent ~* "(Mobile)" ){
          set $agentflag 1;
        }

        if ( $agentflag = 1 ) {
          return 301 https://m.example.com;
        }