追 logs 時,留意到一些 bot 都會特別去戳 HTTP CONNECT 這個 method,看了文件才知道可能是在偵測主機是否可以當成跳板來使用,因此針對這些 methods 建立規則。
多數平台應該都會使用 RESTful 的概念來設計 API,所以會用到的應該是 GET
, POST
, PUT
, DELETE
:
if ($request_method !~ ^(GET|HEAD|POST|DELETE)$ ) { return 444; }
這個方法用了一陣子,直到有次發現 WordPress 的某些 API 一直故障、出錯,但又不是功能導致的問題,使用開發人員工具以後,才知道不是只有 RESTful 定義的幾個 HTTP method 會被用到。
最後改成只擋比較有風險的二個 HTTP method:
if ($request_method ~ ^(CONNECT|TRACE)$ ) { return 444; }