因为众所周知的原因,Google Analytics 在中国大陆访问不是很顺畅,并且很多国产浏览器都自带广告拦截插件,导致谷歌统计后台统计的数据与实际差距很大。
那么有没有什么更好的方案呢?有的,那就是使用中间件进行反代(前提是服务器本身在能够流畅访问谷歌统计的国家或地区)。
解析
首先为了成功反向代理,需要向配置块中添加 DNS 解析,用于请求谷歌的接口,一般情况下用 127.0.0.1
即可,就可以使用,为了防止部分机房的 DNS 请求篡改可以使用自定义 DNS 进行解析。
# CloudFlare Public DNS (IPv4 & IPv6)
#resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001];
# Google Public DNS (IPv4 & IPv6)
resolver 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844];
根据情况选择一个开启即可。
处理
然后添加反向代理的主逻辑,添加两个 location
将请求进行转发,并且使用 sub_filter
模块进行内容重写。
location /gtag/js {
sub_filter 'www.googletagmanager.com' $server_name;
sub_filter 'analytics.google.com' $server_name;
sub_filter 'google-analytics.com' $server_name;
sub_filter_types *;
sub_filter_once off;
proxy_pass https://www.googletagmanager.com;
proxy_set_header Accept-Encoding '';
proxy_set_header X-Real-IP $remote_addr;
proxy_buffering on;
proxy_redirect off;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 60m;
proxy_hide_header "Expires";
proxy_hide_header "x-xss-protection";
add_header Cache-Control "no-cache";
add_header X-Content-Type-Options "nosniff";
}
location /g/collect {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://analytics.google.com$uri$is_args$args&uip=$remote_addr;
proxy_redirect off;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 60m;
proxy_cache off;
proxy_hide_header "Expires";
proxy_hide_header "Pragma";
add_header X-Content-Type-Options "nosniff";
}
然后在配置文件中加入以上部分,然后在前端引用地址时,将地址换为你的域名后面接谷歌统计引入脚本地址,比如:https://www.vvave.net/gtag/js?id=G-CVJJJJJJJJ
。
然后就可以在后台看到统计脚本的访问日志了。
附录
参考链接
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2022-05-17 10:28 AM