Hugh's Blog

通过 Nginx 添加谷歌分析代码

一般谷歌分析代码是加到 </head> 或者 </body> 中的,正常来说添加到公用文件即可,这样全站都能使用,但是如果有的项目是独立的或者都是静态文件,这样子就不好添加了,而且修改起来也会变得麻烦,幸好 Nginx 提供了 sub_filter 方法,可以在响应正文前对一些字符进行过滤替换,使用很简单,做个记录。

server {
    # ...
    set $ga_tracking_js '<script>console.log("Your tracking code");</script>';

    location / {
        # ...
        if (!-f $request_filename) {
            set $ga_tracking_js '';
        }

        sub_filter '</body>' "${ga_tracking_js}</body>";
    }
}

我这里只对请求存在的文件进行替换,对于 404 或者 50x 不进行记录,如果要记录的话,可以看下这篇文章,里面有介绍方法:Sending Nginx-logs to Google Analytics

PS:本来是想把 sub_filter 写到 if 里面的,不过语法并不支持。


参考

Add Google Analytics tracking code to HTML via nginx

Module ngx_http_sub_module