0%

通过Apache建立正向代理访问Google Analytics

本文主要参考博客:

Google Analytics被墙后如何继续使用

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

配置环境

  1. 这里是ubuntu+apache2的环境,所以就先开启apache的rewriteproxy功能,如下。
    1
    2
    3
    4
    a2enmod rewrite
    a2enmod proxy
    a2enmod proxy_http
    service apache2 restart
  2. 下载analytics.js的文件,把里面传往www.google-analytics.com的请求发往自己域名下,例如发往www.mak-blog.com/ga
    1
    2
    3
    4
    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。

修改apache配置

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

1
2
3
4
5
6
7
8
9
10
11
<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

1
2
3
4
5
6
<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

大功告成。