Javascript 让NodeJ忽略http和https请求的最有效方法是request.abort()?

Javascript 让NodeJ忽略http和https请求的最有效方法是request.abort()?,javascript,node.js,http,https,Javascript,Node.js,Http,Https,让NodeJ忽略请求的资源消耗最少的方法是什么,除非它们满足传入标头中的特定条件 例如,如果referer是一个特定的域,或者请求的url包含一个特定的代码或页面,那么允许它,否则拒绝它而不响应,并最小化资源利用率/连接占用 最终的结果是请求者的请求立即被切断,没有连接,没有发送响应,并且向请求者显示服务器不存在 有点像防火墙,请求被忽略而不提供响应。防火墙可以做到这一点,但想知道如何对发送到nodejs服务器的请求执行类似的操作,特别是当请求数量非常迅速时 目前正在使用request.end(

让NodeJ忽略请求的资源消耗最少的方法是什么,除非它们满足传入标头中的特定条件

例如,如果referer是一个特定的域,或者请求的url包含一个特定的代码或页面,那么允许它,否则拒绝它而不响应,并最小化资源利用率/连接占用

最终的结果是请求者的请求立即被切断,没有连接,没有发送响应,并且向请求者显示服务器不存在

有点像防火墙,请求被忽略而不提供响应。防火墙可以做到这一点,但想知道如何对发送到nodejs服务器的请求执行类似的操作,特别是当请求数量非常迅速时

目前正在使用request.end()和connection.destroy()立即结束请求,但这是最好的方法,特别是因为request.end()发送一个空响应


request.abort()是处理这种情况的更好(资源效率更高)的方法吗?

最有效的方法可能是部署单独的防火墙或单独的代理(如nginx)来为您执行此操作。您不能真正让端点认为您的服务器不在那里,因为在您甚至可以看到头之前,TCP连接已经建立。对于服务器来说,仅仅关闭套接字所做的工作可能比发送一个空响应要少。但是,如果这一点很重要,那么您可能需要测量一系列场景,以确定当您的服务器受到您想要避免的大量请求的攻击时,哪一种对您的服务器最有效。好的,我知道防火墙可以做到这一点,但是一旦请求到达nodejs服务器,什么是结束它的最有效方法?我对这个问题进行了修改,使之具体化,并考虑使用request.abort()。这可能是您需要在某种测试工具中测量自己的东西。很多人不会只是四处走走就知道答案
request.abort()
看起来是最精简的路径(删除所有挂起的数据并关闭套接字),但您必须对其进行测试。就我个人而言,我认为出于这个目的,我应该将nginx作为代理部署在同一个盒子上,并让另一个进程处理请求的过滤,这样我的nodejs服务器就只需要处理合法请求。
request.abort()
方法是否只有在发出请求时才可用?尝试
request.destroy()
request.socket.destroy()