无名阁
ghs.google.com的代替方法
2011-9-24 笑看风云

大家都知道因为gfw的存在,ghs.google.com经常被墙,所以我们gae用户要找一个可以完美的代替ghs.google.com的方法,所以有了这篇文章,长话短说,我们来进入主题。


一) 权宜的方法:


建立  ghs.yourdomain.com  做 A 指向  可用的 ghs.google.com 可用的IP


然后用 ghs.yourdomain.com 替代 ghs.google.com


缺点是: 在国内,你指向的IP可能随时被封.


优点是: 可以免费实现


二) 完美方案:


在国外申请一台机器, 利用反向代理服务器(如:squid , nginx,squid) 指向 ghs.google.com , 而 ghs.yourdomain.com域名 指向这个反向代理服务器. 我已经验证过,完全可以做到.


缺点: 需要些 Money


优点: 只要google 还在支持的服务,永远可以使用. (当然如果你自己太过分了, 连自己代理服务器的IP都被封了, 那就怪自己吧)


设置过程(这里以nginx为例):


1) 下载 nginx  比如:  nginx-0.6.31.tar.gz


2) tar -zxf nginx-0.6.31.tar.gz


3) cd nginx-0.6.31


4) ./configure --prefix=/usr/local/nginx --with-http_realip_module


5) make


6) make install


7) ln -sf /usr/local/nginx/sbin/nginx /usr/sbin/nginx


8 ) 设置反向代理: 编辑 /usr/local/nginx/conf/nginx.conf  ,如:


upstream hosts_yourdomain_com {      --  别名可以随便取


server ghs.google.com:80;   -- ghs.google.com


}


server {


listen       80;


server_name  ghs.yourdomain.com;   --  我自己的 ghs 域名


#charset koi8-r;


#access_log  logs/host.access.log  main;


location / {


proxy_redirect off;


proxy_set_header Host $host;


proxy_pass http://hosts_yourdomain_com;   --- 前面取的别名


proxy_set_header  x-real-IP  $remote_addr;


proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;


}


9) nginx运行控制


1、检查配置文件有无语法错误    shell> nginx -t


2、启动(不带任何参数直接运行即可):  shell> nginx

3、重新加载nginx配置 :  shell> killall -s HUP nginx    #//或者 killall -1 nginx

4、处理完当前请求后退出nginx :  shell> killall -s QUIT nginx    #//或者 killall -3 nginx

10)  最后将你的实际域名 做 CNAME 指向 ghs.yourdomain.com.  就大功告成了.



补充:


  按如下配置可以解决共享范围的控制问题:  假设限定在 *.abc.com  *.efg.com  这两个域名使用 该自建的GHS服务


upstream ghs_google_com {    #别名可以随便取,反向代理目的地址: Google 的 GHS
   server ghs.google.com:80;  
}


server {
    listen       80;
    server_name  *.abc.com *.efg.com;    #允许 *.abc.com 和 *.efg.com 通过该反向代理服务器


    location / {
       proxy_redirect off;
       proxy_set_header Host $host;
       proxy_pass http://ghs_google_com#转向到 Google的 GHS
       proxy_set_header  x-real-IP  $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}


server {
    listen       80;
    server_name  *.com *.cn *.org *.mobi *.tel *.asia *.net *.name *.me *.tv *.cc *.hk *.biz *.info;


    location xxxx {         #表示非前面允许的域名的其他域名统统禁止通行,此处的"xxxx"是乱写的   
            #其实可以通过这里指向普通的Web服务(非GHS的服务).
           
#     于是同一个IP即可以做"自制GHS服务",又可以做其他正常的功能.
    }
}

评论:
笑看风云
2017-02-15 00:29 回复
@muzi:这个内容已经是五年前的内容呢,但是我是为了啥写的这篇文章我自己都玩的一干二净了,真是抱歉。
muzi
2017-02-11 14:01 回复
但是现在这样反向代理之后访问到的都是google的404页面了!请问如何解决
发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容