我有一个服务器块,它监听特定服务器名称上的80个端口请求以及一些位置指令。我如何让nginx处理任何不匹配的请求,好像它没有收到它,那就让它超时?目前,这些请求被处理为404错误
答案 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或其他一些可以监控日志并禁止防火墙客户端的工具。