在Google App Engine上架设反向代理

参考文献:

反向代理的作用大家可以Google下,上面的文章也有介绍。其实上面的文章已经介绍了如何架设,我只是稍微说得更明白一些。

准备工作
  1. 申请Google App Engine帐号(我很早之前就有了,不知道现在还能不能申请),并创建一个应用,例如myapps;
  2. 安装Python 2.5,这是GAE SDK推荐的,我用的是Python 2.6,看起来问题不大,传送门,安装好之后,需要在环境变量中的PATH加入Python的安装位置(如C:\python26);
  3. 安装GAE SDK,传送门
  4. 下载bs2grproxy,传送门
架设代理

解压缩bs2grproxy,有两个地方要修改:

  1. app.yaml中第一行改为application: myapps,其中myapps是你刚才新建的GAE应用的名称;
  2. bs2grpconfig.py中第15行的TARGET_HOST改为你要反向代理的目标地址,这里其实暂不修改也没关系,可以上传好后再改。

弄好之后就可以开始上传,经过尝试,比较保险的上传方法是(环境:Win7 x64,其它环境大同小异吧):

  1. 打开控制台,转到bs2grproxy所在的文件夹,例如解压在C:\yourdir\bs2grproxy,就转到C:\yourdir;
  2. 执行“appcfg.py update_indexes bs2grproxy/”,可能会提示输入GAE的邮箱帐号和密码,按照提示输入。这个命令是在GAE应用上创建索引(所谓的索引,我现在将它理解成GAE上的虚拟文件夹,细节可以不管),这一步理论上可以跳过,但是有很高的几率导致出错,建议还是不要跳过;
  3. 执行“appcfg.py update bs2grproxy/”,上传反向代理应用的本体。
  4. 架设完毕,尝试用myapps.appspot.com访问反向代理的网站。
配置反向代理

主要就是修改反向代理的地址,在应用首页上进入反向代理应用的沙盒,选左侧的Datastore Viewer,可以看到有且只有一条记录,点进去,拉到最下面,可以看到修改target_host的地方。

外:GAE的索引400错误的处理办法

当上传发生了索引的400错误(可以在上传时观察信息提示,如果发生错误会有error字样)时,直接覆盖上传是无法解决的,网上有人说删除index.yaml可以避免这个错误,经过摸索,我自己的解决办法如下(假设是上述的反向代理发生了错误):

  1. 将index.yaml改名,例如_index.yaml;
  2. 执行“appcfg.py vacuum_indexes bs2grproxy/”,由于没有了index.yaml,所有的索引都将被删除;
  3. 将index.yaml的名字改回来,重新用“appcfg.py update_indexes bs2grproxy/”上传索引。

如果不update_indexes,而是直接update应用的话,发生400错误的概率很高,所以先上传好索引会比较好。

了解了GAE的原理之后觉得还是很赞的,如果不是数据库有限制,我真想把actools放上去。