HTTP 444(无响应)而不是404,403错误页面?

How*_*ard 7 http nginx httpresponse http-status-code-404

我总是在nginx配置中使用"return 444"来阻止通过IP或错误的主机名直接访问我的服务器的爬虫.它只是关闭连接.完善.

现在我想使用此响应而不是nginx抛出的标准404.html页面,但我在配置时失败.

    error_page 500 502 503 504 /custom_50x.html;
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我不能像这里"返回444":

    server {
    listen      80;
    server_name "";
    return      444;
}
Run Code Online (Sandbox Code Playgroud)

有人知道将这两者结合起来的方法吗?

提前致谢!

Sha*_*han 9

重定向请求然后您可以轻松返回状态代码

server {
error_page 500 502 503 504 =444 @blackhole;

  location @blackhole {
    return 444;
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 我发现 `error_page` 指令中的 `=444` 是不必要的。 (2认同)

Jea*_*net 7

只是想补充一点,@blackhole当某些奇怪的请求发送到服务器时,使用命名位置会引发 Nginx 默认的 500 错误页面(更多详细信息请参见此处),因此未实现所需的结果(444)。

\n\n

我通过使用以下符号来解决这个问题:

\n\n
error_page 301 400 403 404 500 502 503 504 =444 /444.html;\nlocation = /444.html {\n        return 444;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

更新:请注意,如果上述块本身位于块内location,则位置路径location = /444.html {\xe2\x80\xa6在重新加载时可能会提示 Nginx 错误,因为 Nginx 要求它是父块的子位置location--> 例如:location = [sub-location]/444.html {\xe2\x80\xa6

\n