我如何阻止特定 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 的情况下)甚至在它命中之前就被阻止了网络服务器。
我想使用嵌入式 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 的情况下)甚至在它命中之前就被阻止了网络服务器。