幽灵医院故事情节:hyk-proxy 一个web proxy框架

来源:百度文库 编辑:偶看新闻 时间:2024/05/22 04:52:55

关于

  • hyk-proxy是一个web proxy框架,支持基于Google AppEngine平台和Seattle平台,以及PHP Web空间的proxy实现
  • hyk-proxy从V0.9.0开始结构更改为framework+plugins方式,具体proxy实现由各个plugin完成
  • 在基于AppEngine实现的proxy部分,展示了通过RPC来实现高性能web proxy的途径。基于目前基于AppEngine部分实现机制,将来还可以实现暴露更多GAE特有功能,实现为一个远程的GAE lib,而不仅仅作为简单web proxy(目前已经实现用户权限管理/统计/基于用户流量控制等功能)。
  • 在基于Seattle部分,目前仅实现web proxy功能,包括完整的https tunnel
  • 在基于PHP Web空间部分,实现了http proxy功能,以及满足特定网络条件下的完全https tunnel
  • hyk-proxy目前支持HTTP(S) to GAE/XMPP to GAE/TCP to Seattle/HTTP to PHP四种方式完成web proxy功能
  • hyk-proxy从V0.8.6开始支持plugin,理论上可以任意扩展而不仅仅局限于GAE/Seattle/PHP

hyk-proxy原理

  • hyk-proxy分为两部分,一部分运行于远程server上,如GAE/Seattle/PHP Web Space,属于remote server;另一部分运行于本地,属于local server,实质为一个中转的http server。
  • 当浏览器设置的代理服务器地址为local server地址时,local server将浏览器的请求编码发送给remote server执行proxy功能
    1. 若remote server为GAE平台,则local server将http请求通过一个通用RPC框架远程调用到remote server上,获取远程调用结果;
    2. 若remote server为Seattle平台, 则local server将http请求加密后直接转发给remote server
    3. 若remote server为PHP Space,实现原理类似Seattle部分,不同之处在于https tunnel实现是另外一种构建tunnel技术,对当前网络条件也有约束
  • local server在获取调用结果简单处理后,转给浏览器完成一次代理访问。
  • 一次web访问经过此代理的完整过程如下:
  • Browser<-->Local Server<-->Remote Server<-->Real Web Server
其中Local Server与Remote Server之间属于通信层部分,不局限于HTTP连接;如GAE Remote Server由于防火墙原因无法直接通过HTTP连接,可采用XMPP模式穿越
  • 由于基于AppEngine部分RPC框架通信层部分可以替换,因此local server与GAE remote server之间的通信方式可以视实际情况替换。由于GAE本身的限制,目前理论上只有三种方式可以选择:
    1. HTTP,local server作为HTTP client访问remote server
    2. XMPP,local server作为一个XMPP user与remote server进行通信
    3. EMAIL,local server 与remote server发送/接受email通信(由于EMail限制较大,不适于用于RPC通信协议,目前不会实现)
  • 而基于Seattle部分则在理论上支持TCP/UDP通信,目前实现TCP连接
  • 基于PHP Web Hosting部分,目前通过HTTP方式完成普通http proxy,以及一种tunnel技术完成https proxy实现
  • hyk-proxy目前支持的四种默认内部proxy模式比较
    • HTTP2GAE/HTTPS2GAE
    • 由于服务器的先天优势,在性能上相比其它方式占有绝对优势;不足则在于严重依赖GAE/Google的服务直连可达情况
    • XMPP2GAE
    • 由于是绕道XMPP服务,所以HTTP模式的不足在这里是不存在的;此外,由于这里默认是SSL加密通讯,通讯安全性更强;由于前面所说的原因,在速度上较HTTP有所欠缺
    • Seattle
    • Seattle是另一个云计算服务,在编程模型上的限制较GAE以及PHP远少,所以可以按照标准模式实现HTTPS的proxy(没有证书问题),以及没有GAE的一些固有限制情况下(GAE的固有限制看这里);当然,其弱势在于Seattle服务的稳定性以及Seattle服务器的带宽性能
    • PHP
    • 基于PHP的实现相对于GAE的优势在于限制较少,以及在满足特定条件下可以实现完整https tunnel;相对于Seattle的优势在于服务的稳定性以及较快的带宽

hyk-proxy的插件

  • hyk-proxy中很多功能由插件支持,默认并不安装,如Seattle/PHP/SPAC等,所有支持的插件具体说明/下载请查看项目hyk-proxy-plugins

如何使用

AppId共享计划

  

注意