本文主要参考博客:Google Analytics被墙后如何继续使用
之前一直觉得Google Analytics不好使,因为google的域名都很多不能访问,然后以前用了一些方法,把js文件下载到自己的主机上,这样做治标不治本,因为js下载回来后,还是会访问一下http://www.google-analytics.com的,而这时候如果访问不到就会没法统计。
参考了一下别人文章的做法,通过国外主机来转发发往www.google-analytics.com的请求,这就可以解决这个问题。但是别人是用Nginx,我这里就只用到apache,所以今天就折腾一下,看怎么在apache上实现正向代理。

1.配置环境

1.1这里是ubuntu+apache2的环境,所以就先开启apache的rewrite和proxy功能,如下。

a2enmod rewrite
a2enmod proxy
a2enmod proxy_http
service apache2 restart

1.2下载analytics.js的文件,把里面传往www.google-analytics.com的请求发往自己域名下,例如发往www.mak-blog.com/ga。

wget -q http://www.google-analytics.com/analytics.js -O analytics.js
# 如果在Mac下运行,需要在-i参数后加'':
# For Mac: sed -i '' 's;www.google-analytics.com;mockingbot.com/ga;g' analytics.js
sed -i 's;www.google-analytics.com;mockingbot.com/ga;g' analytics.js

然后在Google Analytics的跟踪代码中,替换成自己的analytics.js。

2.修改apache配置

方法一:
对apache的sites-enabled配置文档进行更改,添加如下代码。
vi /etc/apache2/sites-enabled/000-default.conf

<VirtualHost *:80>
……
RewriteEngine On
#带问号的地址转发参数处理,可以自行百度,目的是在参数后面加入uip=%{REMOTE_ADDR},如果不加的话,就会无法判断访问者的IP,默认认为发起的IP是自己服务器的IP。
RewriteCond %{QUERY_STRING} ^(.+)$
#进行一个重定向,debug一下是否正确加入相应参数。
RewriteRule ^/ga/collect$ /gaga/collect?%1&uip=%{REMOTE_ADDR} [R=301,L]
#把www.mak-blog.com/gaga转发到www.google-analytics.com
ProxyPass /gaga http://www.google-analytics.com
……
</VirtualHost>

方法二:
对apache的sites-enabled配置文档进行更改,添加如下代码。
vi /etc/apache2/apache2.conf

<Location /ga>
	RewriteEngine On
	RewriteCond %{QUERY_STRING} ^(.+)$
	RewriteRule ^/ga/collect$ /collect?%1&uip=%{REMOTE_ADDR} [L]
	ProxyPass http://www.google-analytics.com
</Location>

再重启一下apache

service apache2 restart

大功告成。

更多