正向代理与反向代理的简单应用
2013-08-24在网络条件比较奇葩的情况下,使用代理还是很有必要的(比如翻越某高墙)。这里只是两个简单运用代理的例子,还望看客勿喷。
正向代理
正向代理,就像是提供了一台跳板,使你能够通过跳板来访问网络,有两个好处:1、可以访问你无法访问,而跳板服务器能访问的网络资源。 比如使用GAE作为跳板。 2、加速网络,假如你与跳板服务器在同一个局域网,而服务器的访问速度比你直接访问要快得多,那使用正向代理 可以加速网络,改善上网体验。
正向代理的实现方案有很多,我选择较为简单的方案 shadowsocks 。shadowsocks 是由clowwindy 发明的轻量级隧道代理,可以用来穿过防火墙,我这里是借来加速网络。
服务端有多种选择,包括python
、nodejs
、go
等,使用起来相当灵活(具体见Ports and Clients )。
我选择了使用python版,使用 pip install shadowsocks
安装,另外再安装python-m2crypto
,这样就能够使用更多可选的加密方式了。
编辑好 config.json
文件,运行 nohup ssserver > log &
,就算完成了服务端的部署。
客户端同样有多种选择,linux的话使用python版还是很方便的,win的话也有其他可选的gui版本。后台运行,然后浏览器配合 ` Proxy SwitchySharp `
就能很好地管理代理的切换,自动切换丝毫不影响关键网站使用goagent
。
这样简单配置之后,看优酷超清基本都不用缓冲了,瞬间觉得生活美好了不少。
反向代理
反向代理则是用于另外一个需求。局域网内有一台服务器,只能通过局域网访问。为了使得外面也能访问该服务器的资源,则使用局域网内另外一台服务器 (外网可直接访问该服务器),作为代理,转发http请求到局域网内的服务器,解决问题。
这里使用apache
的反向代理功能,首先启动相关的模块 sudo a2enmod proxy
以及 sudo a2enmod proxy_http
,不同的系统可能具体的启动方式不相同,
google一下应该都能解决。然后在服务器上配置一个简单的虚拟主机,把文件全部都粘贴上来了。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName www.example.com
DocumentRoot /path/to/website
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /path/to/website/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
#proxy 配置
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://192.168.1.1/
ProxyPassReverse / http://192.168.1.1/
#省略无关内容若干
</VirtualHost>
然后启动虚拟主机并重启apache服务,就可以通过外网服务器来访问局域网服务器了。详细的说明可以参考 manual
不管是正向代理还是反向代理都能做很多有意思的事情,等待后续继续发掘。