Nov 02

1.直接寻找可用的 IP.

通过网络上的 ping 工具,检测得到 Google GHS 的 IP,分别打开下面列表中的网址,查询的地方输入 ghs.google.com 或者 ghs.googlehosted.com,里面得到的每一个 A Records 或响应 IP 就对应一个可以尝试的 GHS IP 地址,然后在本地通过 ping 测试验证是否能用。

http://bgp.he.net/dns/ghs.google.com
https://cloudmonitor.ca.com/en/dnstool.php
http://ping.chinaz.com/

可以将需要绑定的域名直接绑定到 A 记录,如果你有多个域名需要绑定的话,当一个 IP 被屏蔽的话,就需要修改所有的 A 记录。这里有一个小技巧,你可以添加一个可用的 IP 到域名 ghs.domain.com,然后通过 cname 的形式绑定 GAE 域名,这样当需要修改时仅仅需要修改一条 A 记录就可以了。

或者你可以使用网上仍然可用的由 GDG 维护的 ghs 替代域名:

www.goofan.net.g.xgslb.net

当然,这个需要添加 cname 记录。

2.使用 Nginx 直接反向代理
如果有 VPS 的话,可以直接安装 Ngrok,利用 Ngrok 反向代理 GAE,这种方法简单粗暴,一定能成功。但是如果你有多个 GAE 应用的话,就需要添加多段类似的代码,如果嫌麻烦的话可以参考下面第 3 种方法。

server
{
        listen   80;
        server_name xxx.com;

        location /
        {
                proxy_pass http://yyy.appspot.com;
                proxy_set_header Host "yyy.appspot.com";
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

3.使用 Nginx 反向代理 Google GHS
最好使用单独的 VPS 来反向代理 Google GHS,代码如下所示,然后添加 A 记录 ghs 到 VPS 的 IP,添加 cname 需要绑定的域名 到 ghs.domain.com。

upstream ghs {
   ip_hash;
   server ghs.google.com;
   server 72.14.203.121;
   server 72.14.207.121;
   server 74.125.43.121;
   server 74.125.47.121;
   server 74.125.53.121;
   server 74.125.77.121;
   server 74.125.93.121;
   server 74.125.95.121;
   server 74.125.113.121;
   server 216.239.32.21;
   server 216.239.34.21;
   server 216.239.36.21;
   server 216.239.38.21;
}

server {
   listen       80;
   server_name  ghs.domain.com;
#下行中的ghs换成自己定义的名称。
    log_format  ghs  '$remote_addr - $remote_user [$time_local] "$request" '
               '$status $body_bytes_sent "$http_referer" '
               '"$http_user_agent" $http_x_forwarded_for';
#下行中两处ghs换成自己定义的名称。
   access_log  /home/log/ghs.log ghs;

   location / {
     proxy_redirect off;
     proxy_set_header Host $host;
     proxy_pass http://ghs;
     proxy_set_header  X-Real-IP  $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_redirect false;
   }

}

server {
   listen       443;
   server_name  ghs.domain.com;
   log_format  mail  '$remote_addr - $remote_user [$time_local] "$request" '
               '$status $body_bytes_sent "$http_referer" '
               '"$http_user_agent" $http_x_forwarded_for';
   access_log  /home/log/mail.log mail;

   location / {
     proxy_redirect off;
     proxy_set_header Host $host;
     proxy_pass http://ghs;
     proxy_set_header  X-Real-IP  $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_redirect false;
   }
}

参考资料:
1.http://steven-wang.appspot.com/nginx-reverse-proxy-122001.html
2.Install Nginx and config Google ghs proxy

Leave a Reply