之所以需要用到HTTP Proxy Server并不是为了要×××,而是为了让没有公网IP地址的内网主机通过有公网IP地址的外网主机访问Internet。举个例子,阿里云ECS在购买时可以不购买公网IP地址,但这种没有公网IP地址的ECS云主机(实例)是没有访问Internet的能力的,也就是说无法在这台实例上下载文件,这在部署应用如部署MySQL时可能遇到无法完成安装问题。解决的办法有两种,一种是在另一台具有公网访问能力的ECS实例上搭建×××服务,另一种是在另一台具有公网访问能力的ECS实例上搭建HTTP Proxy服务。
搭建×××服务在之前的文章中已经写过了,不同的是,路由部分需要视情况重新设定,因为没有做这个实验,个人猜想是保留一个到×××服务器公网IP地址的路由,再把默认路由指向×××服务器公网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
部分截图如下图所示:
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
部分截图如下图所示:
tag:阿里云内网访问公网,tinyproxy,HTTP Proxy
--end--