我需要做一个基本的洪水控制,没有什么很复杂的。如果他们在短时间内请求太多次,我想获取源 IP 并延迟答案。我看到有一个 req.ip 字段,还有一个包:https ://www.npmjs.com/package/request-ip
有什么不同?
我需要做一个基本的洪水控制,没有什么很复杂的。如果他们在短时间内请求太多次,我想获取源 IP 并延迟答案。我看到有一个 req.ip 字段,还有一个包:https ://www.npmjs.com/package/request-ip
有什么不同?
我建议您使用该request-ip模块,因为它会在请求中查找特定的标头,如果它们不存在则回退到一些默认值。
以下是它用于从请求中确定用户 ip 的顺序。
X-Client-IPX-Forwarded-Forheader 可能会返回多个 IP 地址,格式为:“client IP, proxy 1 IP, proxy 2 IP”,所以我们取第一个。X-Real-IP(nginx 代理/FastCGI)X-Cluster-Client-IP(Rackspace LB,河床黄貂鱼)X-Forwarded:Forwarded-For和Forwardedreq.connection.remoteAddressreq.socket.remoteAddressreq.connection.socket.remoteAddressreq.info.remoteAddress无论您的 Web 服务器配置或代理设置如何,甚至连接技术如何(...)HTTP,它都可以获取真实的客户端 IPẀebSocket
您还可以查看 express req.ips(yes, ip s , not req.ip) 属性以获取有关请求的更多信息:
req.ips ( http://expressjs.com/en/api.html )
当信任代理设置未评估为 false 时,此属性包含在 X-Forwarded-For 请求标头中指定的 IP 地址数组。否则,它包含一个空数组。此标头可以由客户端或代理设置。
例如,如果 X-Forwarded-For 是 client,proxy1, proxy2, req.ips 将是 ["client", "proxy1", "proxy2"],其中 proxy2 是最远的下游。