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