一种基于NGINX+LUA的安全加速中间件实现方法及装置与流程

文档序号:11156808阅读:556来源:国知局
一种基于NGINX+LUA的安全加速中间件实现方法及装置与制造工艺

本发明涉及基于NGINX+LUA的安全加速中间件领域。



背景技术:

目前的单台WEB(网站)服务器受限于后端动态脚本的运行效率,当大规模访问量或DDOS(分布式拒绝服务)攻击涌入时,服务器很容易当机。现有技术一般是以一台或多台反向代理服务器来提供加速或安全过滤功能,需要较多的硬件资源,本发明则是在现有的NGINX(一种高性能的网站服务器)服务器上用LUA(一种小巧的脚本语言)进行扩展,合理利用现有资源,对服务接口进行缓存加速,有效提升单台WEB服务器的性能及安全性,能起到重要的安全加速作用。



技术实现要素:

本发明所要解决的技术问题是提供一种基于NGINX+LUA的安全加速中间件实现方法及装置,目的在于提高单台服务器的安全性,加速服务接口获取到的数据的调用速度。

本发明解决上述技术问题的技术方案如下:

一种基于NGINX+LUA的安全加速中间件实现方法,所述方法包括以下步骤:

S1,在服务器接收到用户的访问请求时,先从共享内存中获取配置信息,若存在配置信息,则根据配置信息筛选该访问请求能否放行;若不存在配置信息,则访问动态服务接口获取配置信息并缓存到共享内存,然后根据配置信息筛选该访问请求能否放行,若筛选通过能放行,则进入S2,若筛选不通过不能放行,则返回报错信息;

S2,根据配置信息检查用户请求访问的服务接口是否为可缓存服务,若是,则进入S3,若否,则直接调用对应动态服务接口获取数据返回给用户;

S3,根据用户的访问请求到共享内存缓存中查找用户请求访问的服务接口对应的缓存数据,若存在对应的缓存数据,则将对应的缓存数据返回给用户,若不存在对应的缓存数据,进入S4;

S4,根据用户的访问请求到REDIS(一种数据库)集群中查找用户请求访问的服务接口对应的缓存数据,若存在对应的缓存数据,则将对应的缓存数据返回给用户,并将对应的缓存数据存入共享内存;若不存在对应的缓存数据,则调用对应动态服务接口处理,并将获取到的数据作为缓存数据存入REDIS集群和共享内存。

本发明的有益效果是:(1)在服务器接到访问请求调用动态服务接口前,先进行安全过滤,再查找对应的缓存数据,使可被缓存的动态服务接口获得的数据能被快速调用而不用重新调用动态服务接口,服务器安全性和处理速度都能得到提升;(2)共享内存中缓存数据有效时间较短,是使用频率最高的缓存数据,REDIS集群中缓存数据有效时间比共享内存长,是使用频率较高的缓存数据,分时间级别缓存数据既能减小服务器的资源占用,又能有效提升服务器的处理速度;(3)配置信息首先由动态服务接口获取后缓存在共享内存中,也是一种缓存数据,有效时间较短,一段时间后会自动被清理,因此对配置信息修改之后能在较短时间被动态服务接口重新获取并更新到共享内存。

在上述技术方案的基础上,本发明还可以做如下改进:

进一步,所述S1中“根据配置信息筛选该访问请求能否放行”的步骤包括:

S11,根据配置信息检查用户IP地址(网络之间互连的协议地址)黑名单,若该访问请求的用户的IP地址属于用户IP地址黑名单,则不放行并直接返回报错信息;若该用户不属于黑名单,则进入S12;

S12,根据配置信息检查URL(统一资源定位符,是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示)正则规则黑名单,若该访问请求的URL属于URL正则规则黑名单,则不放行并直接返回报错信息;若该URL不属于黑名单,则放行并进入S2。

采用上述进一步方案的有益效果是:既支持过滤用户IP地址黑名单,也支持过滤URL正则规则黑名单,能抵挡大多数不安全的访问,提升服务器的安全性能,也节约了服务器的资源,提升服务器的处理速度。

进一步,所述S4中具体包括以下步骤:

S41,检查REDIS集群中是否存在该访问请求的服务接口对应的缓存数据,若是,进入S42,若否,进入S44;

S42,检查对应缓存数据的缓存因子与用户请求访问的服务接口的缓存因子是否相同,若缓存因子不同,则进入S44,若缓存因子相同,则进入S43;

S43,检查对应缓存数据的时间戳判断该缓存数据是有效还是过期,若该缓存数据有效,则将缓存数据返回给用户并存入到共享内存;若该缓存数据过期,则进入S44;

S44,检查该访问请求的服务接口是否被锁定,若是,则将REDIS集群中过期的缓存数据返回给用户;若否,则锁定该服务接口,并进入S45;

S45,执行动态服务接口获取对应的数据,若动态服务接口获取数据成功,则将对应的数据返回给用户并存入REDIS集群和共享内存,同时解锁该服务接口,若动态服务接口获取数据不成功,则直接返回报错信息并解锁该服务接口。

采用上述进一步方案的有益效果是:(1)对REDIS服务器中的缓存数据加上了缓存因子和缓存时间戳,通过缓存因子能批量控制缓存数据的有效性,只要服务接口的缓存因子发生变化,对应的REDIS服务器中的缓存数据会因为缓存因子不一致而失效,此时会重新调用动态服务接口获取数据,并将数据和新的缓存因子更新到REDIS服务器的缓存中;(2)缓存时间戳设置的REDIS集群中的缓存数据的有效时间大于共享内存中数据的有效时间,但小于REDIS集群中数据本身的缓存时间,在缓存时间戳设定的时间过期后重新调用动态服务接口去更新数据并缓存,协调了数据时效性和服务器的处理速度;(3)REDIS集群中某一服务接口对应的缓存数据时间戳过期之后,如果有访问请求该服务接口对应的缓存数据,则将该服务接口锁定并调用动态服务接口去获取数据,锁定该服务接口能避免在调用动态服务接口获取数据的过程中,其它访问也请求该服务接口对应的缓存数据,导致重复调用动态服务接口获取数据,降低了服务器性能。锁定服务接口之后,在调用动态服务接口获取数据的过程中,先将过期缓存数据发送给客户,在数据获取成功并缓存到REDIS集群和共享内存中之后,解锁该服务接口,能有效的提高服务器的处理效率。

进一步,所述S1中的配置信息包括:各服务接口是否为可缓存服务、共享内存中缓存数据的有效时间、各服务接口的缓存因子、REDIS集群中缓存数据的缓存因子、REDIS集群中缓存数据的有效时间、用户IP地址黑名单、URL正则规则黑名单。

采用上述进一步方案的有益效果是:各种与安全过滤和缓存相关的配置都存在配置信息中,可以灵活配置,根据情况自由调整服务器的处理方式,平衡和优化服务器的安全性和处理速度。

进一步,所述方法还包括:

成功获取共享内存或REDIS集群中的缓存数据返回给用户时,将获取成功的信息发送到日志服务器进行统计记录的步骤;

对访问请求进行用户IP地址黑名单检查或URL正则规则黑名单检查后,将检查结果信息发送到日志服务器进行统计记录的步骤。

采用上述进一步方案的有益效果是:对缓存数据调用信息和访问过滤信息进行统计记录,能为以后分析服务数据热门度和制定新的安全防护策略提供数据支持,有助于优化服务器处理性能。

一种基于NGINX+LUA的安全加速中间件装置,所述装置包括:

安全防护模块,用于在服务器接收到用户的访问请求时,先从共享内存中获取配置信息,若存在配置信息,则根据配置信息筛选该访问请求能否放行;若不存在配置信息,则访问动态服务接口获取配置信息并缓存到共享内存,然后根据配置信息筛选该访问请求能否放行,若筛选通过能放行,则进入服务接口加速模块,若筛选不通过不能放行,则返回报错信息;

服务接口加速模块,用于根据配置信息检查用户请求访问的服务接口是否为可缓存服务,若是,则进入共享内存缓存模块,若否,则直接调用对应动态服务接口获取数据返回给用户;

共享内存缓存模块,用于根据用户的访问请求在共享内存中查找访问请求的服务接口对应的缓存数据,若存在对应的缓存数据,则将缓存数据返回给用户,若不存在对应的缓存数据,进入REDIS集群缓存模块;

REDIS集群缓存模块,用于根据用户的访问请求在REDIS集群中查找访问请求的服务接口对应的缓存数据,若存在对应的缓存数据,则将对应的缓存数据返回给用户,并将对应的缓存数据存入共享内存;若不存在对应的缓存数据,则调用对应动态服务接口处理,并将获取到的数据作为缓存数据存入REDIS集群和共享内存。

本发明的有益效果是:(1)在服务器接到访问请求调用动态服务接口前,先进行安全过滤,再查找对应的缓存数据,使可被缓存的动态服务接口获得数据能被快速调用而不用重新调用动态服务接口,服务器安全性和处理速度都能得到提升;(2)共享内存中缓存数据有效时间较短,是使用频率最高的缓存数据,REDIS集群中缓存数据有效时间比共享内存长,是使用频率较高的缓存数据,分时间级别缓存数据既能减小服务器的资源占用,又能有效提升服务器的处理速度;(3)配置信息首先由动态服务接口获取后缓存在共享内存中,也是一种缓存数据,有效时间较短,一段时间后会自动被清理,因此对配置信息修改之后能在较短时间被动态服务接口重新获取并更新到共享内存。

在上述技术方案的基础上,本发明还可以做如下改进:

进一步,所述安全防护模块中“根据配置信息筛选该访问请求能否放行”的过程包括:

根据配置信息检查用户IP地址黑名单,若该访问请求的用户的IP地址属于用户IP地址黑名单,则不放行并直接返回报错信息;若该用户不属于黑名单,则进行URL正则规则黑名单检查;

根据配置信息检查URL正则规则黑名单,若该访问请求的URL属于URL正则规则黑名单,则不放行并直接返回报错信息;若该URL不属于黑名单,则放行并进入服务接口加速模块。

采用上述进一步方案的有益效果是:既支持过滤用户IP地址黑名单,也支持过滤URL正则规则黑名单,能抵挡大多数不安全的访问,提升服务器的安全性能,也节约了服务器的资源,提升服务器的处理速度。

进一步,所述REDIS集群缓存模块具体包括:

缓存数据检查模块,用于检查REDIS集群中是否存在访问请求的服务接口对应的缓存数据,若是,进入缓存因子检查模块,若否,进入服务接口锁定模块;

缓存因子检查模块,用于检查对应缓存数据的缓存因子与用户请求访问的服务接口的缓存因子是否相同,若缓存因子不同,则进入服务接口锁定模块,若缓存因子相同,则进入缓存有效时间检查模块;

缓存有效时间检查模块,用于检查对应缓存数据的时间戳判断该缓存是有效还是过期,若该缓存数据有效,则将缓存数据返回给用户并存入到共享内存;若该缓存数据过期,则进入动态服务接口执行模块;

服务接口锁定模块,用于检查该访问请求的服务接口是否被锁定,若是,则将REDIS集群中过期的缓存数据返回给用户;若否,则锁定该服务接口,并进入动态服务接口执行模块;

动态服务接口执行模块,用于执行动态服务接口获取对应的数据,若动态服务接口获取数据成功,则将对应的数据返回给用户并存入REDIS集群和共享内存,同时解锁该服务接口,若动态服务接口获取数据不成功,则直接返回报错信息并解锁该服务接口。

采用上述进一步方案的有益效果是:(1)对REDIS服务器中的缓存数据加上了缓存因子和缓存时间戳,通过缓存因子能批量控制缓存数据的有效性,只要服务接口的缓存因子发生变化,对应的REDIS服务器中的缓存数据会因为缓存因子不一致而失效,此时会重新调用动态服务接口获取数据,并将数据和新的缓存因子更新到REDIS服务器的缓存中;(2)缓存时间戳设置的REDIS集群中的缓存数据的有效时间大于共享内存中数据的有效时间,但小于REDIS集群中数据本身的缓存时间,在缓存时间戳设定的时间过期后重新调用动态服务接口去更新数据并缓存,协调了数据时效性和服务器的处理速度;(3)REDIS集群中某一服务接口对应的缓存数据时间戳过期之后,如果有访问请求该服务接口对应的缓存数据,则将该服务接口锁定并调用动态服务接口去获取数据,锁定该服务接口能避免在调用动态服务接口获取数据的过程中,其它访问也请求该服务接口对应的缓存数据,导致重复调用动态服务接口获取数据,降低了服务器性能。锁定服务接口之后,在调用动态服务接口获取数据的过程中,先将过期缓存数据发送给客户,在数据获取成功并缓存到REDIS集群和共享内存中之后,解锁该服务接口,能有效的提高服务器的处理效率。

进一步,所述装置还包括配置管理模块,用于设置所述配置信息,所述配置信息包括:各服务接口是否为可缓存服务、共享内存中缓存数据的有效时间、各服务接口的缓存因子、REDIS集群中缓存数据的缓存因子、REDIS集群中缓存数据的有效时间、用户IP地址黑名单、URL正则规则黑名单。

采用上述进一步方案的有益效果是:各种与安全过滤和缓存相关的配置都存在配置信息中,可以灵活配置,根据情况自由调整服务器的处理方式,平衡和优化服务器的安全性和处理速度。

进一步,所述装置还包括:

缓存命中统计模块,用于在成功获取共享内存或REDIS集群中的缓存数据返回给用户时,将获取成功的信息发送到日志服务器进行统计记录;

安全过滤统计模块,用于对访问请求进行用户IP地址黑名单检查或URL正则规则黑名单检查后,将检查结果信息发送到日志服务器进行统计记录。

采用上述进一步方案的有益效果是:对缓存数据调用信息和访问过滤信息进行统计记录,能为以后分析服务数据热门度和制定新的安全防护策略提供数据支持,有助于优化服务器处理性能。

附图说明

图1为本发明实施例所述的基于NGINX+LUA的安全加速中间件实现方法的基本流程图。

图2为本发明实施例所述的基于NGINX+LUA的安全加速中间件实现方法的REDIS缓存数据处理方法流程图。

图3为本发明实施例所述的基于NGINX+LUA的安全加速中间件装置的结构图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

实施例1

如图1所示,一种基于NGINX+LUA的安全加速中间件实现方法,包括以下步骤:

S1,在服务器接收到用户的访问请求时,先从共享内存中获取配置信息,若存在配置信息,则根据配置信息筛选该访问请求能否放行;若不存在配置信息,则访问动态服务接口获取配置信息并缓存到共享内存,然后根据配置信息筛选该访问请求能否放行,若筛选通过能放行,则进入S2,若筛选不通过不能放行,则返回报错信息;

S2,根据配置信息检查用户请求访问的服务接口是否为可缓存服务,若是,则进入S3,若否,则直接调用对应动态服务接口获取数据返回给用户;

S3,根据用户的访问请求到共享内存缓存中查找用户请求访问的服务接口对应的缓存数据,若存在对应的缓存数据,则将对应的缓存数据返回给用户,若不存在对应的缓存数据,进入S4;

S4,根据用户的访问请求到REDIS集群中查找用户请求访问的服务接口对应的缓存数据,若存在对应的缓存数据,则将对应的缓存数据返回给用户,并将对应的缓存数据存入共享内存;若不存在对应的缓存数据,则调用对应动态服务接口处理,并将获取到的数据作为缓存数据存入REDIS集群和共享内存。

具体地,共享内存处理速度快,但容量较小,所以作为第一级缓存使用,首先就到共享内存中查找缓存数据,一般设置的数据过期时间会较短,避免长时间占用资源,所以存储的都是使用频率非常高的缓存数据。

REDIS集群可以做扩展,容量比较大,所以作为第二级缓存使用,共享内存中找不到对应的缓存数据时再去REDIS集群中查找对应的缓存数据,一般设置的数据过期时间比共享内存中的过期时间长,可以合理使用资源,存储的是使用频率比较高的缓存数据。

初始情况下,共享内存和REDIS集群中都没有缓存数据,调用了动态服务接口获取数据后,会在数据中加入设定好的过期时间信息,并缓存到共享内存和REDIS集群中。

本实施例在服务器接到访问请求调用动态服务接口前,先进行安全过滤,再查找对应的缓存数据,使可被缓存的动态服务接口获得的数据能被快速调用而不用重新调用动态服务接口,服务器安全性和处理速度都能得到提升。

共享内存中缓存数据有效时间较短,是使用频率最高的缓存数据,REDIS集群中缓存数据有效时间比共享内存长,是使用频率较高的缓存数据,分时间级别缓存数据既能减小服务器的资源占用,又能有效提升服务器的处理速度。

配置信息首先由动态服务接口获取后缓存在共享内存中,也是一种缓存数据,有效时间较短,一段时间后会自动被清理,因此对配置信息修改之后能在较短时间被动态服务接口重新获取并更新到共享内存。

进一步,所述S1中“根据配置信息筛选该访问请求能否放行”的步骤包括:

S11,根据配置信息检查用户IP地址黑名单,若该访问请求的用户的IP地址属于用户IP地址黑名单,则不放行并直接返回报错信息;若该用户不属于黑名单,则进入S12;

S12,根据配置信息检查URL正则规则黑名单,若该访问请求的URL属于URL正则规则黑名单,则不放行并直接返回报错信息;若该URL不属于黑名单,则放行并进入S2。

该改进中,既支持过滤用户IP地址黑名单,也支持过滤URL正则规则黑名单,能抵挡大多数不安全的访问,提升服务器的安全性能,也节约了服务器的资源,提升服务器的处理速度。

进一步,如图2所示,所述S4中具体包括以下步骤:

S41,检查REDIS集群中是否存在该访问请求的服务接口对应的缓存数据,若是,进入S42,若否,进入S44;

S42,检查对应缓存数据的缓存因子与用户请求访问的服务接口的缓存因子是否相同,若缓存因子不同,则进入S44,若缓存因子相同,则进入S43;

S43,检查对应缓存数据的时间戳判断该缓存数据是有效还是过期,若该缓存数据有效,则将缓存数据返回给用户并存入到共享内存;若该缓存数据过期,则进入S44;

S44,检查该访问请求的服务接口是否被锁定,若是,则将REDIS集群中过期的缓存数据返回给用户;若否,则锁定该服务接口,并进入S45;

S45,执行动态服务接口获取对应的数据,若动态服务接口获取数据成功,则将对应的数据返回给用户并存入REDIS集群和共享内存,同时解锁该服务接口,若动态服务接口获取数据不成功,则直接返回报错信息并解锁该服务接口。

具体地,REDIS集群中缓存数据的结构为:缓存因子+过期时间戳+原始数据,对于可缓存的服务接口,动态服务接口调用数据之后,首次将数据缓存至REDIS集群中时,会给数据添加过期时间戳和缓存因子;以后每次调用该缓存数据就会校验缓存因子和过期时间戳,如果过期时间戳的过期时间到了,则会重新调用动态服务接口更新数据,同时过期时间戳也会被更新。

如果某部分服务接口对应的数据需要全部过期失效,则可以通过修改该部分服务接口的缓存因子,这样该部分服务接口的缓存因子就跟REDIS集群中对应数据的缓存因子不一致,会重新调用动态服务接口获取数据,并将新的缓存因子和过期时间戳封装到数据上,以便下次调用。

该改进中,对REDIS服务器中的缓存数据加上了缓存因子和缓存时间戳,通过缓存因子能批量控制缓存数据的有效性,只要服务接口的缓存因子发生变化,对应的REDIS服务器中的缓存数据会因为缓存因子不一致而失效,此时会重新调用动态服务接口获取数据,并将数据和新的缓存因子更新到REDIS服务器的缓存中。

缓存时间戳设置的REDIS集群中的缓存数据的有效时间大于共享内存中数据的有效时间,但小于REDIS集群中数据本身的缓存时间,在缓存时间戳设定的时间过期后重新调用动态服务接口去更新数据并缓存,协调了数据时效性和服务器的处理速度。

REDIS集群中某一服务接口对应的缓存数据时间戳过期之后,如果有访问请求该服务接口对应的缓存数据,则将该服务接口锁定并调用动态服务接口去获取数据,锁定该服务接口能避免在调用动态服务接口获取数据的过程中,其它访问也请求该服务接口对应的缓存数据,导致重复调用动态服务接口获取数据,降低了服务器性能。锁定服务接口之后,在调用动态服务接口获取数据的过程中,先将过期缓存数据发送给客户,在数据获取成功并缓存到REDIS集群和共享内存中之后,解锁该服务接口,能有效的提高服务器的处理效率。

进一步,所述S1中的配置信息包括:各服务接口是否为可缓存服务、共享内存中缓存数据的有效时间、各服务接口的缓存因子、REDIS集群中缓存数据的缓存因子、REDIS集群中缓存数据的有效时间、用户IP地址黑名单、URL正则规则黑名单。

具体地,可以采用专门的配置管理服务器来设置该配置信息,或在本机上建立目录保存配置信息文件,需要修改时直接在本机修改该配置信息文件。

该改进中,各种与安全过滤和缓存相关的配置都存在配置信息中,可以灵活配置,根据情况自由调整服务器的处理方式,平衡和优化服务器的安全性和处理速度。

进一步,所述方法还包括:

成功获取共享内存或REDIS集群中的缓存数据返回给用户时,将获取成功的信息发送到日志服务器进行统计记录的步骤;

对访问请求进行用户IP地址黑名单检查或URL正则规则黑名单检查后,将检查结果信息发送到日志服务器进行统计记录的步骤。

该改进中,对缓存数据调用信息和访问过滤信息进行统计记录,能为以后分析服务数据热门度和制定新的安全防护策略提供数据支持,有助于优化服务器处理性能。

实施例2

如图3所示,一种基于NGINX+LUA的安全加速中间件装置,包括:

安全防护模块,用于在服务器接收到用户的访问请求时,先从共享内存中获取配置信息,若存在配置信息,则根据配置信息筛选该访问请求能否放行;若不存在配置信息,则访问动态服务接口获取配置信息并缓存到共享内存,然后根据配置信息筛选该访问请求能否放行,若筛选通过能放行,则进入服务接口加速模块,若筛选不通过不能放行,则返回报错信息;

服务接口加速模块,用于根据配置信息检查用户请求访问的服务接口是否为可缓存服务,若是,则进入共享内存缓存模块,若否,则直接调用对应动态服务接口获取数据返回给用户;

共享内存缓存模块,用于根据用户的访问请求在共享内存中查找访问请求的服务接口对应的缓存数据,若存在对应的缓存数据,则将缓存数据返回给用户,若不存在对应的缓存数据,进入REDIS集群缓存模块;

REDIS集群缓存模块,用于根据用户的访问请求在REDIS集群中查找访问请求的服务接口对应的缓存数据,若存在对应的缓存数据,则将对应的缓存数据返回给用户,并将对应的缓存数据存入共享内存;若不存在对应的缓存数据,则调用对应动态服务接口处理,并将获取到的数据作为缓存数据存入REDIS集群和共享内存。

具体地,共享内存处理速度快,但容量较小,所以作为第一级缓存使用,首先就到共享内存中查找缓存数据,一般设置的数据过期时间会较短,避免长时间占用资源,所以存储的都是使用频率非常高的缓存数据。

REDIS集群可以做扩展,容量比较大,所以作为第二级缓存使用,共享内存中找不到对应的缓存数据时再去REDIS集群中查找对应的缓存数据,一般设置的数据过期时间比共享内存中的过期时间长,可以合理使用资源,存储的是使用频率比较高的缓存数据。

初始情况下,共享内存和REDIS集群中都没有缓存数据,调用了动态服务接口获取数据后,会在数据中加入设定好的过期时间信息,并缓存到共享内存和REDIS集群中。

本实施例在服务器接到访问请求调用动态服务接口前,先进行安全过滤,再查找对应的缓存数据,使可被缓存的动态服务接口获得数据能被快速调用而不用重新调用动态服务接口,服务器安全性和处理速度都能得到提升。

共享内存中缓存数据有效时间较短,是使用频率最高的缓存数据,REDIS集群中缓存数据有效时间比共享内存长,是使用频率较高的缓存数据,分时间级别缓存数据既能减小服务器的资源占用,又能有效提升服务器的处理速度。

配置信息首先由动态服务接口获取后缓存在共享内存中,也是一种缓存数据,有效时间较短,一段时间后会自动被清理,因此对配置信息修改之后能在较短时间被动态服务接口重新获取并更新到共享内存。

进一步,所述安全防护模块中“根据配置信息筛选该访问请求能否放行”的过程包括:

根据配置信息检查用户IP地址黑名单,若该访问请求的用户的IP地址属于用户IP地址黑名单,则不放行并直接返回报错信息;若该用户不属于黑名单,则进行URL正则规则黑名单检查;

根据配置信息检查URL正则规则黑名单,若该访问请求的URL属于URL正则规则黑名单,则不放行并直接返回报错信息;若该URL不属于黑名单,则放行并进入服务接口加速模块。

该改进中,既支持过滤用户IP地址黑名单,也支持过滤URL正则规则黑名单,能抵挡大多数不安全的访问,提升服务器的安全性能,也节约了服务器的资源,提升服务器的处理速度。

进一步,如图3所示,所述REDIS集群缓存模块具体包括:

缓存数据检查模块,用于检查REDIS集群中是否存在访问请求的服务接口对应的缓存数据,若是,进入缓存因子检查模块,若否,进入服务接口锁定模块;

缓存因子检查模块,用于检查对应缓存数据的缓存因子与用户请求访问的服务接口的缓存因子是否相同,若缓存因子不同,则进入服务接口锁定模块,若缓存因子相同,则进入缓存有效时间检查模块;

缓存有效时间检查模块,用于检查对应缓存数据的时间戳判断该缓存是有效还是过期,若该缓存数据有效,则将缓存数据返回给用户并存入到共享内存;若该缓存数据过期,则进入动态服务接口执行模块;

服务接口锁定模块,用于检查该访问请求的服务接口是否被锁定,若是,则将REDIS集群中过期的缓存数据返回给用户;若否,则锁定该服务接口,并进入动态服务接口执行模块;

动态服务接口执行模块,用于执行动态服务接口获取对应的数据,若动态服务接口获取数据成功,则将对应的数据返回给用户并存入REDIS集群和共享内存,同时解锁该服务接口,若动态服务接口获取数据不成功,则直接返回报错信息并解锁该服务接口。

具体地,REDIS集群中缓存数据的结构为:缓存因子+过期时间戳+原始数据,对于可缓存的服务接口,动态服务接口调用数据之后,首次将数据缓存至REDIS集群中时,会给数据添加过期时间戳和缓存因子;以后每次调用该缓存数据就会校验缓存因子和过期时间戳,如果过期时间戳的过期时间到了,则会重新调用动态服务接口更新数据,同时过期时间戳也会被更新。

如果某部分服务接口对应的数据需要全部过期失效,则可以通过修改该部分服务接口的缓存因子,这样该部分服务接口的缓存因子就跟REDIS集群中对应数据的缓存因子不一致,会重新调用动态服务接口获取数据,并将新的缓存因子和过期时间戳封装到数据上,以便下次调用。

该改进中,对REDIS服务器中的缓存数据加上了缓存因子和缓存时间戳,通过缓存因子能批量控制缓存数据的有效性,只要服务接口的缓存因子发生变化,对应的REDIS服务器中的缓存数据会因为缓存因子不一致而失效,此时会重新调用动态服务接口获取数据,并将数据和新的缓存因子更新到REDIS服务器的缓存中。

缓存时间戳设置的REDIS集群中的缓存数据的有效时间大于共享内存中数据的有效时间,但小于REDIS集群中数据本身的缓存时间,在缓存时间戳设定的时间过期后重新调用动态服务接口去更新数据并缓存,协调了数据时效性和服务器的处理速度。

REDIS集群中某一服务接口对应的缓存数据时间戳过期之后,如果有访问请求该服务接口对应的缓存数据,则将该服务接口锁定并调用动态服务接口去获取数据,锁定该服务接口能避免在调用动态服务接口获取数据的过程中,其它访问也请求该服务接口对应的缓存数据,导致重复调用动态服务接口获取数据,降低了服务器性能。锁定服务接口之后,在调用动态服务接口获取数据的过程中,先将过期缓存数据发送给客户,在数据获取成功并缓存到REDIS集群和共享内存中之后,解锁该服务接口,能有效的提高服务器的处理效率。

进一步,如图3所示,所述装置还包括配置管理模块,用于设置所述配置信息,所述配置信息包括:各服务接口是否为可缓存服务、共享内存中缓存数据的有效时间、各服务接口的缓存因子、REDIS集群中缓存数据的缓存因子、REDIS集群中缓存数据的有效时间、用户IP地址黑名单、URL正则规则黑名单。

具体地,可以采用专门的配置管理服务器来设置该配置信息,或在本机上建立目录保存配置信息文件,需要修改时直接在本机修改该配置信息文件。

该改进中,各种与安全过滤和缓存相关的配置都存在配置信息中,可以灵活配置,根据情况自由调整服务器的处理方式,平衡和优化服务器的安全性和处理速度。

进一步,如图3所示,所述装置还包括:

缓存命中统计模块,用于在成功获取共享内存或REDIS集群中的缓存数据返回给用户时,将获取成功的信息发送到日志服务器进行统计记录;

安全过滤统计模块,用于对访问请求进行用户IP地址黑名单检查或URL正则规则黑名单检查后,将检查结果信息发送到日志服务器进行统计记录。

该改进中,对缓存数据调用信息和访问过滤信息进行统计记录,能为以后分析服务数据热门度和制定新的安全防护策略提供数据支持,有助于优化服务器处理性能。

在本说明书的描述中,参考术语“实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体方法、装置或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、方法、装置或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1