草庐IT

cdp-node

全部标签

node.js - 在我的网站上放慢流氓网络 srappers 并仍然使用 Varnish

想象一下,有一些爬虫在抓取我的网站。我怎样才能禁止它们并仍然将GoogleBots列入白名单?我想我可以找到谷歌机器人的ip范围,我正在考虑使用Redis来存储当天的所有访问,如果在短时间内我看到太多来自同一IP的请求->禁止。我的堆栈是ubuntu服务器、nodejs、expressjs。我看到的主要问题是这种检测是在Varnish之后进行的。所以Varnish缓存必须被禁用。有更好的主意或好的想法吗? 最佳答案 您可以使用VarnishACL[1],在apache中维护它可能会有点困难,但肯定会起作用:aclbad_boys{"

node.js 和 redis : is a redis store accessible across node connections?

一个非常基本的问题,但我找不到任何地方的答案(可能是因为它太明显了):在node.js(即“redis”npm模块)中,redis存储是否像其他数据库一样可以跨node.js连接访问?假设我像这样设置我的node.js服务器varredis=require("redis"),client=redis.createClient();假设我有两个独立的连接:用户A和用户B。如果用户A有client.set("foo","bar",redis.print);和用户B(在不同的Node连接上)client.get("foo",function(err,reply){console.log(re

node.js - 向REDIS中插入数据(node.js + redis)

如何,我可以像这样插入(存储)数据(node.js+redis):vartimestamp=newDate().getTime();client.hmset('room:'+room,{'enabled':true,timestamp:{'g1':0,'g2':0}});我可以为g1或g2增加多少?附言当以这种方式插入时间戳时,redis-cli显示时间戳而不是UNIX时间 最佳答案 您正在寻找HMGET的组合和HMSET.根据thedocs:HMGETkeyfield[field...]Returnsthevaluesassoci

node.js - 以 QUEUED 作为参数值的 Redis 调用回调

我正在用mocha测试一个模块,场景是一个小类,它有方法,有一个必需的回调参数。当我在第一个describe上运行测试时,它得到了预期的结果,当它在第二个和第三个describe上运行时,beforeEach和afterEach该类实际上创建了一个新的Redis客户端并在它应该结束时调用end()。client.hget('profile:1','name',function(error,profileID){/*为什么回调将QUEUED作为其参数的值?它不会抛出任何错误.. 最佳答案 尝试添加if(error)console.lo

node.js - 从 redis/index.js 文件捕获连接错误 throw(n)

我正在通过heroku连接到redis。varredisClient=require('redis').createClient({host:'http://networkinglawyer.in/home/redis',port:9374,db:0,requirepass:'abcdefghijklmnopqrstuvwxyz'});redis.index.js文件正在throwingerr我如何抓到并打印到控制台?编辑:-错误是2013-11-29T07:18:38.255695+00:00app[web.1]:userSchemadefined2013-11-29T07:18:3

node.js - 在多个 Node 实例中使用 Pub-Sub 进行广播

我想要Node服务器“A”和“B”的两个实例。'A'将在房间中推送连接的客户端[使用socket.io]。“A”将发布“B”已订阅的事件。从“A”接收到该特定事件后,实例“B”将在给定房间内广播一条消息。想使用socket.io的Room特性想问一下,可以吗?我正在尝试使用Redis存储,但不知道如何发布事件以便服务器“B”接收它。 最佳答案 您可以运行2个redis实例,一个在服务器A上,一个在服务器B上。如果你将A上的地址绑定(bind)到*或者127.0.0.1,B的IP,你可以要求服务器B成为A的从属:slaveof6379

node.js - 对 Redis 数据库的异步 NodeJS 请求

我需要向Redis数据库发出多个请求,并且我需要一个请求的响应才能执行下一个请求。我们来分析一下这个例子:(我使用node_redis作为请求)varmessage-id=undefined;//requestthenextidclient.incr("message-id",function(err,id){message-id=id;});//usethe'nextid'forstoringamessageclient.hmset("messages",message-id,messageContent);这种方式行不通,因为当我调用client.hmdet()时message-i

node.js - 寻找将 redis 与 node.js 一起使用的有效方法

我已经使用redis和node.js为聊天室编写了一些示例,但在我继续这条道路之前,我想知道这是否是最好的方法:varredis=require('redis'),cache=redis.createClient(cfg.redis_port,cfg.redis_host)functiongetUsers(cb){cache.select(cfg.redis_db,function(err,status){cache.get('chat.users',function(err,data){varusers=data&&JSON.parse(data)||[];c.log('getuse

node.js - Express.js Passportjs 和未经授权的用户

好吧,我已经研究了几天了,我真的不知道问题出在哪里。由于某种原因,身份验证失败(实际上,Passportjs认为它​​失败了),但在我看来一切正常。当我登录时,它会调用failureRedirect-url。但是当我打印出req.user对象的值时,一切都是正确的。情况:我在/login处有一个登录表单,其中显示了2个字段,一个用于电子邮件地址,一个用于密码。这是Express的设置:varapp=express();app.configure(function(){app.set('views',path.join(__dirname,'views'));app.set('viewe

node.js - 了解 redis-store pub-sub 中的 "dispatch" channel

我正在为socket.io使用node.js,redisstore。在执行PUB-SUB时,我可以看到channel=dispatch因此需要了解此dispathchannel,它如何连接到我的Node进程以及PUBSUB在内部如何工作。已经经历了redis.iopub-sub文档但无法获取调度channel。任何其他文件都可以提供帮助。谢谢。 最佳答案 我认为您也在为socket.io使用Redis存储?Here是socket.io中创建dispatchchannel的相关代码。 关于