【问题标题】:Kubernetes nginx ingress - block requests with bad host headersKubernetes nginx 入口 - 阻止具有错误主机标头的请求
【发布时间】:2019-08-03 15:18:33
【问题描述】:

我有一个 Django 应用程序在 Kubernetes 上的 Nginx 入口后面运行。我希望阻止使用错误主机标头发送的请求(正在寻找主机标头利用/缓存中毒)。

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

但是,我不确定如何通过 externalingress yaml 在 Kubernetes 中执行此操作。我遇到了这个PR,它看起来很相关,但无法弄清楚。

【问题讨论】:

    标签: nginx kubernetes


    【解决方案1】:

    您可以通过两种方式做到这一点:通过server-snippet annotation 或通过覆盖现有 Nginx Ingress Controller 的 ConfigMap

    文档中的示例,如何通过server-snippet 注解为底层nginx-ingress-controller 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-ingress-controller 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;
            }
    

    【讨论】:

      猜你喜欢
      • 2021-05-31
      • 2020-03-30
      • 2021-06-11
      • 2021-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-30
      • 2018-12-16
      相关资源
      最近更新 更多