access.log
任何将 NGINX 服务器上线并在一周后查看它的人都会发现许多 URL 漏洞正在尝试。每天,任何时间。
那么,如果我拒绝任何和所有 url 参数呢?如果每个查询字符串都被 NGINX 屏蔽,而 NGINXrewrite
将无法匹配任何未定义为rewrite
自然返回 404 Not Found 的内容怎么办?
或者一系列重写以放置在这个始终存在的位置块内?
location / {
rewrite "^/api/v1/users/?$" /api/v1/Users.php last;
rewrite "^/api/v1/users/(all|active|inactive)?$" /api/v1/Users.php?status=$1 last;
rewrite "^/api/v1/users/(\d+)/?$" /api/v1/Users.php?userId=$1 last;
}
# URL Match examples...
http://localhost/api/v1/users
http://localhost/api/v1/users/
http://localhost/api/v1/users/all
http://localhost/api/v1/users/active
http://localhost/api/v1/users/inactive
http://localhost/api/v1/users/2001
http://localhost/api/v1/users/2002
http://localhost/api/v1/users/2003
有没有办法让 NGINX 忽略 URL 参数?如果这是一个幼稚的问题,请随时告诉我。也许我问错了问题。
而是使用
return
,而不是rewrite
因为"rewrite 指令只能返回代码 301 或 302"。为此,location
使用正则表达式创建一个以捕获特定请求 uri。如果您只想删除所有这些请求,则返回http 状态 444。
例子: