调试VCL文件的最佳方法是什么?

时间:2011-12-08 19:17:40

标签: varnish geoip varnish-vcl

我在我的VCL文件中写入内联C.更具体地说,我使用Maxmind的GeoIP数据库对访问者的IP进行地理编码。我安装了所有东西,我已经按照GeoIP数据库的所有wiki示例进行操作,并且一切都在顺利进行。

除了返回国家的例子,我现在试着用GeoIP做一些魔术。我想使用GeoIP_record_by_addr()方法返回访问者的城市,该方法返回一个指针。

问题:我似乎无法正确地将GeoIPRecord *转换为char *。我试了几个小时。我得到Varnish编译我的VCL文件没有任何错误或通知,但varnish服务器响应403.

问题:无论如何,我可以调试内联C或403清漆响应?

1 个答案:

答案 0 :(得分:3)

一般来说,Firebug和varnishlog将是你最好的朋友。

如果要调试纯VCL,最好的方法是将数据发送到HTTP头([req / bereq / beresp / resp] .http。[header name])并将其值检入Firebug(或varnishlog,如果你请求很少。)

如果你想调试内联C,你也可以使用标题(VRT_SetHdr()),但如果你的C代码使varnish崩溃,你会看到为什么进入/ var / log / messages。

您还可以检查varnishlog以查看varnish是否崩溃...但是当清漆崩溃时,您会收到超时,而不是403 ......

我必须看到你的VCL才能理解为什么你会得到403,但从技术上来说,这不是一个“错误”,而是一个“状态”,这意味着你的请求已被清漆处理(不幸的是,禁止了一些)

除非你要求他这样做,否则我认为Varnish不会返回403。因此,403状态很可能来自您的Web服务器(后端)。

无论如何,你的清漆似乎没有崩溃,而是有行为问题。