在Nginx中使用特殊的unicode字符拒绝请求

我想阻止/拒绝所有有一个或多个非ASCII字符的请求。

例如,我收到这样的请求:

/\ufffd?s=p&z=\ufffd&g=\ufffd&o=2 

\ ufffd是“ replace字符 ”。

这导致我的Web应用程序给我发送错误,因为我的数据库还不是UTF-8(长话短说)。

我知道我应该解决这个问题,而不是隐藏它,但直到我这样做,阻止所有奇怪的请求到达应用程序将阻止我的邮箱填写错误。

我也知道在这个特定的网站中的所有URL不包含非ASCII字符,所以这个快速修复不会破坏任何东西。

谢谢!

你可以通过在location指令中使用replace字符本身来匹配这样一个url:

 location /  { return 400; # Or whatever you would like to do. }