Kubernetes-Ingress Server-Snippet 503 用于移动用户代理

标签 kubernetes kubernetes-ingress

我正在尝试创建一个服务器代码段,它将为移动用户返回 503。我正在这样做,通过检查用户代理。
问题:
在移动用户代理的情况下,Server-Snippet 不会返回 503。
总而言之,当用户代理不是移动设备时,将返回 503。移动本身,发送 200。
我无法理解 Ingress 做了什么。似乎,因为服务器狙击程序代码以某种方式“以硬编码方式”解析它。
也许有人遇到了类似的问题。如果有人可以对此类服务器狙击手提供提示,那就太好了。
谢谢

我尝试了几个服务器片段。请检查下面的代码。

  • Try 这是来自 github 的官方代码截图。

  • nginx.ingress.kubernetes.io/server-snippet: set $agentflag 0;

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

    if ( $agentflag = 1 ) { return 503; }



    作为json:
    "nginx.ingress.kubernetes.io/server-snippet": "| set $agentflag 0; if ($http_user_agent ~* \"(Mobile|ios|android)\" ) { set $agentflag 1; } if ( $agentflag = 1 ) { return 503;}"
    

  • 试试

  • nginx.ingress.kubernetes.io/server-snippet: if ($http_user_agent ~* "(Mobile|ios|android)" ){ return 503; }



    作为json:
      "nginx.ingress.kubernetes.io/server-snippet": "    if ($http_user_agent ~* (Mobile|ios|android) ) {\n      return 503; }"
    

    最佳答案

    一个简短的工作解决方案是

       annotations: 
          kubernetes.io/ingress.class: private-nginx 
          kubernetes.io/tls-acme: "true" 
          nginx.ingress.kubernetes.io/server-snippet: | 
          if ($http_user_agent ~* "(Mobile)" ) { 
            return 503; 
          }
    

    关于Kubernetes-Ingress Server-Snippet 503 用于移动用户代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56846602/

    相关文章:

    spring-boot - 在 Kubernetes 中,如何检测到我的 pod 已准备就绪?

    amazon-web-services - kubernetes-aws 中的集群 IP 是如何配置的?

    java - Kubernetes Ingress 应该与 Spring Cloud Gateway 共存吗?

    ssl - 在 Ingress :Issuing certificate as Secret does not exist using 中使用 Let's Encrypt 时出错

    Kubernetes 入口 Controller 找不到 TLS 证书 key

    azure - 激活 RBAC 和 AAD 集成后,如何授予服务主体对 AKS API 的访问权限?

    docker - 如何使用fluentd收集pod日志并将其发送到elasticsearch?

    kubernetes - 如何使用Nginx Ingress正确设置自定义 header ?

    nginx - ingress-nginx 永久重定向 301 不工作

    gateway - 使用 SDS 的 Istio Ingress Gateway 由于凭证名称而失败