Gracece's Blog

生命不息,折腾不止。

正向代理与反向代理的简单应用

在网络条件比较奇葩的情况下,使用代理还是很有必要的(比如翻越某高墙)。这里只是两个简单运用代理的例子,还望看客勿喷。

正向代理

正向代理,就像是提供了一台跳板,使你能够通过跳板来访问网络,有两个好处:1、可以访问你无法访问,而跳板服务器能访问的网络资源。 比如使用GAE作为跳板。 2、加速网络,假如你与跳板服务器在同一个局域网,而服务器的访问速度比你直接访问要快得多,那使用正向代理 可以加速网络,改善上网体验。

正向代理的实现方案有很多,我选择较为简单的方案 shadowsocks 。shadowsocks 是由clowwindy 发明的轻量级隧道代理,可以用来穿过防火墙,我这里是借来加速网络。

服务端有多种选择,包括pythonnodejsgo等,使用起来相当灵活(具体见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

不管是正向代理还是反向代理都能做很多有意思的事情,等待后续继续发掘。

blog comments powered by Disqus