我如何告诉nginx默默地忽略不匹配的请求,让它们超时而不是给404

时间:2012-07-18 10:16:38

标签: nginx

我有一个服务器块,它监听特定服务器名称上的80个端口请求以及一些位置指令。我如何让nginx处理任何不匹配的请求,好像它没有收到它,那就让它超时?目前,这些请求被处理为404错误

2 个答案:

答案 0 :(得分:4)

有一种方法可以忽略每个请求并告诉nginx什么都不回应:

server {
  listen 80 default_server;
  return 444;
}

此处记录:http://nginx.org/en/docs/http/ngx_http_rewrite_module.html

  

非标准代码444关闭连接而不发送响应头。

答案 1 :(得分:0)

我假设您正试图转移恶意请求。这样的事情可能有用(未经测试)。

设置默认服务器(捕获与现有服务器名称不匹配的任何请求),然后将客户端重定向回自身:

server {
    listen  80 default_server;
    rewrite ^ http://127.0.0.1/;
}

您必须为有效服务器块内的无效位置设置类似的catch-all。可能比你想要的更令人头疼。

我不知道这在实践中有多么有用。可能最好考虑使用fail2ban或其他一些可以监控日志并禁止防火墙客户端的工具。