我正在创build一个有大量小工具的网站。 一种是使用与自然语言工具包(nltk)进行交互的Python cgi脚本的工具,该工具是磁盘和CPU密集型的。 我有其他服务不那么密集。
在客户端,这些限制了JavaScript限制。 创buildbot的恶意或非智能用户可以直接build立连接。 我想阻止这个尽可能低的水平,但我需要它是每个目录(CGI脚本坐在旁边的index.html文件)。
我也将有一个防火墙阻止虐待IP地址发出请求。 我想这个返回一个简单的429响应与一个空的JSON对象作为正文。
我还想在其中包含其他规则,如30秒接收到发送时间,否则closures连接。
我如何在Debian的lighttpd服务器上实现这个function?
要直接回答您的问题,请查看Lighttpd的ModEvasive和Traffic Shaping 。
作为替代/除了你提到的,你应该能够节制使用iptables规则每秒连接。
最后,考虑使用某种应用程序(消息)队列机制。 这样,无论有多less请求到达您的web界面/ API端点,队列都将确保只有所需数量的并行nltk任务将同时运行。