我有一个标准的REST API前面的清漆。 请求必须使用X-Access-Token标头进行validation。 我现在需要跟踪所使用的访问令牌对每个资源的请求。 比如,令牌abcd1234请求/ items / xyz 10次。
起初,我只是要计算后端应用程序(PHP)中的数据,但后来认识到Varnish当然会在第一个之后拦截任何请求。
跟踪令牌请求的最佳方式是什么?
目前,我正在阅读varnishlog / varnishncsa在一个单独的线程,或添加像Redis VMOD的东西,并增加一个基于令牌:url的计数器。
有没有人做过这样的事情?
我认为这里有三个合理的select:
使用清漆自定义统计 。 VCS是Varnish Plus的一部分,专门devise用于解决您所描述的用例。 如果你正在使用Varnish Plus,这是要走的路。
使用varnishog / varnishncsa和一些脚本转储计数器到一些外部数据库。
使用Redis或Memcached VMOD。 与选项(2)相比,这会为每个请求增加一些微不足道的开销,但是您将保存一些I / O,并且可以避免执行/维护脚本。 如果VCS不能使用,我认为这是最好的select。
我build议你让清漆做什么最好,caching,并让跟踪完成varnishog / ncsa
通过添加Redis Vmod,您将增加vcl的复杂性,如果由于某些原因您的redis出现故障,您将失去跟踪function。
使用varnishlog / ncsa,您可以在清漆外build立您的跟踪逻辑,通过pipe道varnishlog进程实时处理日志或将日志存储为后者使用。