一台开发的服务器,没有连接外网的权限,但内一网段内有一台机器可以连接外网,不想做路由和搞个 SQUID ,所以直接使用 Perl 来做了一个小的 Web 代理,最简单的实现这个功能。
这样在内部的那台开发服务器,也能使用 cpanm 来安装模块了。
我在想下面这个代理服务器,是不是世界上代码最少的代理服务器。有空可以加强一下,支持存取在本地的文件,支持 cookie,
use strict;
use warnings;
use Plack::Builder;
use Plack::Response;
use Plack::Request;
use LWP::UserAgent;
use Data::Dumper;
my $ua = LWP::UserAgent->new;
my $app = builder {
sub {
my $url = shift;
my $req = Plack::Request->new($url);
my $ua_res = $ua->get($req->request_uri);
my $res = Plack::Response->new($ua_res->code);
$res->headers($ua_res->headers);
$res->body($ua_res->content);
return $res->finalize;
};
};使用也非常简单,启动代理
$ plackup -p 80 proxy.plcpanm 是使用的 wget 下载,所以我们修改一下 wget 的代理地址
编辑.wgetrc 这个文件加入如下
http_proxy = http://x.x.x.x:80
ftp_proxy = http://x.x.x.x:80
use_proxy = on
wait = 5