我有一个服务器块监听特定服务器名称上的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或其他一些工具,可以监视您的日志,并禁止客户端在防火墙。