清漆& Varnishncsa记录问题

时间:2016-10-31 04:10:05

标签: logging logstash amazon-cloudfront varnish

注意到varnishncsa日志的一些奇怪行为,我将其推入ELK堆栈。

为了维护准确的客户端IP地址,我的清漆配置中包含以下内容: ```     //保存原始值     set req.http.X-Varnish-Orig-Forwarded-For = req.http.X-Forwarded-For;     set req.http.X-Varnish-Orig-clientip = client.ip;

// Check / normalise forwarded for header for below C logic
if(req.http.CloudFront-Viewer-Country) {
    // Cloudfront request? Note: This header must be configured in CF settings
    // Remove right most IP address, it belongs to CF
    set req.http.X-Forwarded-For = regsub(req.http.X-Forwarded-For, ",.(?:[0-9]{1,3}\.){3}[0-9]{1,3}$", "");
}

// Remove all but the right most IP
set req.http.X-Forwarded-For = regsub(req.http.X-Forwarded-For, ".*,\s", "");

即。删除cloudfront IP并保留正确的客户端地址。

但是,我注意到在logstash中这不是正在发生的事情...... CloudFront IP总是会通过...

我的varnishncsa日志格式设置为:logformat ="%{X-Forwarded-For} i%l%u%t \"%r \" %s%b \"%{Referer} i \" \"%{用户代理} I \" \"%{X - 转发,原} I \""

下面是一个示例日志:

85.101.101.101,54.240.145.45 - - [31 / Oct / 2016:14:55:53 +1100]" GET http://example.com/stuff/things&349394 HTTP / 1.1" 200 65733" https://example.com&ttl=30&unique_id=1" " Amazon CloudFront" " HTTPS"

正如您所看到的,54.240是一个AWS地址,即。 CloudFront ...我的vark日志grok设置为解析x-forwarded-for并将最后一个IP设置为客户端ip。显然,随着CloudFront的到来,它不应该投入扳手来设置正确的客户端IP ......

知道这里出了什么问题吗?对我来说,似乎varnishncsa在我的清漆配置中的vcl_recv逻辑有机会运行之前发送它的日志记录......?但那没什么意义。在执行请求的哪个部分,varnishncsa日志会起作用?我会假设最后一次.....?

0 个答案:

没有答案