之所以需要用到HTTP Proxy Server并不是为了要翻墙,而是为了让没有公网IP地址的内网主机通过有公网IP地址的外网主机访问Internet。举个例子,阿里云ECS在购买时可以不购买公网IP地址,但这种没有公网IP地址的ECS云主机(实例)是没有访问Internet的能力的,也就是说无法在这台实例上下载文件,这在部署应用如部署MySQL时可能遇到无法完成安装问题。解决的办法有两种,一种是在另一台具有公网访问能力的ECS实例上搭建VPN服务,另一种是在另一台具有公网访问能力的ECS实例上搭建HTTP Proxy服务。

    搭建VPN服务在之前的文章中已经写过了,不同的是,路由部分需要视情况重新设定,因为没有做这个实验,个人猜想是保留一个到VPN服务器公网IP地址的路由,再把默认路由指向VPN服务器公网IP地址。本文介绍的是第二种方案,在另一台具有公网访问能力的ECS实例上搭建HTTP Proxy服务,具体的方案是利用tinyproxy在Linux上搭建HTTP Proxy Server。

tinyproxy是一个开源的非常轻量级但又十分高效的HTTP Proxy服务程序,支持HTTPS和自定义HTTP Header,更多信息可以查看tinyproxy在GitHub Page上的项目主页:https://tinyproxy.github.io/

如果想做更细致的功能,可以考虑用Squid代替tinyproxy。

步骤非常简单,分为两步:1.在服务端安装和配置tinyproxy;2.在客户端配置HTTP/HTTPS访问。

1.在服务端安装和配置tinyproxy

以CentOS6.x为例

yum -q -y install tinyproxy   
cp /etc/tinyproxy/tinyproxy.conf /etc/tinyproxy/tinyproxy.conf$(date +%Y%m%d%H%M%S)~    
/tinyproxy.conf <<-'eof'    
Listen 10.171.168.179    
Allow 10.171.168.0/21    
Allow 172.16.0.0/12    
Allow 100.64.0.0/10    
Allow 10.0.0.0/8    
Allow 10.16.0.0/16    
eof
service tinyproxy start

部分截图如下图所示:

image

2.在客户端配置HTTP/HTTPS访问

# client setting   
cat >>/etc/profile<<eof    
# HTTP/HTTPS proxy setting    
export http_proxy=10.171.168.179:8888    
export https_proxy=10.171.168.179:8888    
# end HTTP/HTTPS proxy setting    
eof

在客户端上测试一下:

export http_proxy=10.171.168.179:8888   
wget http://soft.vpser.net/lnmp/lnmp1.4.tar.gz    
ls lnmp1.4.tar.gz    
rm -f lnmp1.4.tar.gz
export https_proxy=10.171.168.179:8888   
wget https://github.com/favicon.ico    
ls favicon.ico    
rm -f favicon.ico

部分截图如下图所示:

image

tag:阿里云内网访问公网,tinyproxy,HTTP Proxy

--end--