当URL与模式匹配时,配置nginx以返回404

sha*_*nqn 60 webserver nginx

我希望nginx在收到与模式匹配的请求时返回404代码,例如/test/*.如何配置nginx来做到这一点?

Vic*_*nak 90

location /test/ {
  return 404;
}
Run Code Online (Sandbox Code Playgroud)

  • [`return`是`HttpRewriteModule`]的一部分(http://wiki.nginx.org/HttpRewriteModule#return).它使其父位置始终返回给定状态,这正是请求者想要的状态. (4认同)

Chu*_* Ma 21

需要添加"^〜"以使此匹配优先于正则表达式位置块.

location ^~ /test/ {
  return 404;
}
Run Code Online (Sandbox Code Playgroud)

否则你会遇到一些棘手的情况.例如,如果您有另一个位置块,例如

location ~ \.php$ {
  ...
}
Run Code Online (Sandbox Code Playgroud)

有人发送到请求http://your_domain.com/test/bad.php,该正则表达式位置块将由nginx的被拾取以服务该请求.显然这不是你想要的.所以一定要把"^〜"放在那个位置块!

参考:http://wiki.nginx.org/HttpCoreModule#location


Jim*_*Jim 5

location ^~ /test/ {
    internal;
}
Run Code Online (Sandbox Code Playgroud)

  • [`internal`(来自HttpCore`模块)](http://wiki.nginx.org/HttpCoreModule#internal)将位置标记为服务器内部。它将为外部请求返回404,但仍然可以作为内部重定向,重写,错误页面等的目标。 (9认同)