我经常可以在 nginx 访问日志中看到以下带有 400 响应代码的请求:
23.124.177.223 - - [26/May/2018:19:19:59 +0200] "\x97\x00\x00\x00G\xA0\x0B\xC9\xD2\x9C5\x95\xBF\x14\x8F\xEBj\xC8\x0EOqP\x09\xDB.\x8B\x1F\x8F3\x1C'\xA1pg\x22\xB9J\x19IFd\xFD\xC9L\x18z\xA3\xEE\x9AQ\x04\xD6\x22\x13]\xD4\xFD\xF03\x88'\xCC\xDB\x0F+\xC3{Ulds\x00\xA6\x10o\xD9\xFFMO\xA0\x08XL\xE1\xDE\xCA\xDB\x98\xAF\xB9\xE5\xAEU\xFB\x1B\xFD\x8F\x07\x0Bne\x03@\x16b4{\x958\xA8\x19\xD0&\x0E\x7F\x97SJ\x9E\x9F7\x7F\x8D\xC7\xCE\xD4+\xAA\x86%\x8F#\xEEB\x98G\x08\x13\x12\x06\xFDc/8\xC6\x8Dw\xFB\xBB\xBC\x97\xB9\xB9\xB3\xE2" 400 173 "-" "-"
我知道它是自动漏洞扫描程序,但我不确定请求类型是什么以及为什么 nginx 会响应400
。
我已经有以下情况:
if ( $request_method !~ ^(GET|POST|HEAD)$ ) {
return 444; }
是否有HEAD
任何解决方案可以避免正则表达式但又阻止它(返回444
)?
nginx -v 1.10.3
答案1
这根本不是一个请求类型。400 Bad Request
正确的响应是请求语法错误444 No Response
。此错误发生在您的条件得到测试之前,这就是您永远不会从指令中看到(Nginx 扩展错误代码)的原因if
。