我如何阻止特定 IP 访问 node.js

How would I block a specific IP from accessing node.js

我想使用嵌入式 JS 阻止特定 IP 地址访问我用 NodeJS 编写的网站。

Here is my file tree(重要部分是chat.ejs和server.js,忽略其他文件)

如何使用 ejs 来阻止某些 IP 访问该站点?或者如果他们从被阻止的 IP 访问,甚至只是将他们发送到另一个“被阻止”的页面,不允许他们访问主站点。这是一个小项目,目前只有少数人使用该网站,所以我不担心动态 IP 或人们被同一 IP 阻止。

谢谢!

如前所述,这更像是一个 'server' 问题,可以通过合并 ACL(访问控制列表)以多种方式完成

取决于您托管的位置(AWS 有安全组,您可以在其中为 IP 范围等添加 CIDR 块)甚至在 运行 网络服务器(apache、NGINX)

如果您愿意,也可以在 'code' 中完成,方法是在 get 请求本身中添加中间件或条件。基本思想是通过请求对象获取客户端IP,例如

假设您有一个 'predefined' 数组 'allowed' IP

const ips = ['123.23.232.23','123.23.232.23'] 
let reqIP =  req.connection.remoteAddress //Gets the IP of the requestor
if( reqIP.indexOF(ips) !== -1){
//continue to process the request and return results
 }else{
 //IP not in the list, redirect them to a new page 
 }

这不是经过测试的代码,但这个概念应该可以让您 'block' 通过 IP 进行特定请求,但是这只有在您确定 'IP' 不是动态等时才有效

话虽如此,这通常最好在 Web 服务器上执行,否则您将不需要的进程放在节点服务器上,这些进程可能在 WS 层或(在 AWS 的情况下)甚至在它命中之前就被阻止了网络服务器。