我怎么能告诉nginx默默地忽略不匹配的请求,让他们超时而不是给404

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

有一种方法可以忽略每个请求,并告诉nginx什么也不做:

server { listen 80 default_server; return 444; } 

记录在这里: http : //nginx.org/en/docs/http/ngx_http_rewrite_module.html

非标准代码444在不发送响应报头的情况下关闭连接。

我假设你正试图偏转恶意请求。 像这样的东西可能会工作(未经测试)。

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

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

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

我不知道这在实践中会有多大用处。 可能更好考虑fail2ban或其他一些工具,可以监视您的日志,并禁止客户端在防火墙。