我正在尝试创建一个服务器nippet,这将为移动用户返回503。我正在通过检查用户代理来这样做。问题:在移动用户代理的情况下,Server-Snippet不会返回503。总的来说,当用户代理不是移动设备时,返回503。移动本身,发送200。我不明白入口所做的事情。看来,由于服务器侦探代码以某种方式"用硬编码方式"解析。也许有人遇到了类似的问题。如果有人可以提示此类服务器窃听者,那就太好了。谢谢
我尝试了几个服务器敲击。请检查下面的代码。
- 尝试这是Github的官方代码狙击手。
nginx.ingress.kubernetes.io/server-snippet:设置$ agentFlag 0;
if($ http_user_agent〜*"(移动| ios | android("({ 设置$ AgentFlag 1;}
if($ agentflag = 1({ 返回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〜*"(移动| ios | android("({ 返回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;
}
似乎有些事情在句法上是不正确的。if条件之前的空间。
请参阅此片段
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/server-snippet: |
set $agentflag 0;
if ($http_user_agent ~* "(Mobile)" ){
set $agentflag 1;
}
if ( $agentflag = 1 ) {
return 503;
}