TinyProxy是个非常便利,及容易架设的HTTP代理,和squid相比,tinyproxy更小,更好使用。
线上的一台Google代理服务器用的是meow,也是一款http代理软件。但是有一个缺点,需要后台启动,而且,运行一段时间,进程就会挂掉。所以不得不写个脚本,来监控进程,防止挂掉。
准备搭建一个爬虫服务器,买了一个×××,可以随时切换IP的。后端PHP程序只需要调用这台的http代理就可以了。
http代理不能断,所以选择了tinyproxy。
安装方法,有2中。
yum install -y tinyproxy
https://github.com/tinyproxy/tinyproxy 下载最新的包
我选择的是第2种方法,最新版本应该比较稳定。
安装组件
yum install -y asciidoc
下载软件包之后,开始解压安装
unzip tinyproxy-master.zip -d /usr/src/
cd /usr/src/tinyproxy-master/
./autogen.sh
./configure --prefix=/usr/local/tinyproxy
make && make install
备份配置文件
cd /usr/local/tinyproxy/etc/tinyproxy/
cp tinyproxy.conf tinyproxy.conf.bak
cat tinyproxy.conf.bak | grep -v "^#" | grep -v "^$" > tinyproxy.conf
修改配置文件tinyproxy.conf
紫色部分是需要修改的,效果如下:
User root
Group root
Port 8888
Timeout 600
DefaultErrorFile "/usr/local/tinyproxy/share/tinyproxy/default.html"
StatFile "/usr/local/tinyproxy/share/tinyproxy/stats.html"
LogLevel Info
MaxClients 100
MinSpareServers 5
MaxSpareServers 20
StartServers 10
MaxRequestsPerChild 0
#Allow 127.0.0.1
ViaProxyName "tinyproxy"
ConnectPort 443
ConnectPort 563
Listen 1x.1x.1x.1x
PidFile "/var/run/tinyproxy.pid"
LogFile "/var/log/tinyproxy.log"
相关解释:
这里我解释下,修改部分。
默认的user和grop是nobody,如果不改的话,会在/var/log/message日志中看到创建日志文件失败,没有权限
Allow表示允许使用tinyproxy进行HTTP代理的IP地址,因为内网多台服务器访问,所以直接注视,就是允许开放访问。
Listen 表示监听地址,这里我写的是内网IP,那么公网是无法访问到的,本来就只允许内网访问。
PidFile和LogFile表示pid文件和Log文件。
编辑启动脚本
vim /etc/init.d/tinyproxy
脚本内容我是参考yum安装tinyproxy的启动脚本,相关路径改了下
内容如下:
#!/bin/sh
#
# tinyproxy Startup script for the tinyproxy server
#
# chkconfig: - 85 15
# description: small, efficient HTTP/SSL proxy daemon
#
# processname: tinyproxy
# config: /usr/local/tinyproxy/etc/tinyproxy/tinyproxy.conf
# config: /etc/sysconfig/tinyproxy
# pidfile: /var/run/tinyproxy.pid
#
# Note: pidfile is created by tinyproxy in its config
# see PidFile in the configuration file.
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
exec="/usr/local/tinyproxy/sbin/tinyproxy"
prog=$(basename $exec)
config="/usr/local/tinyproxy/etc/tinyproxy/tinyproxy.conf"
[ -e /etc/sysconfig/tinyproxy ] && . /etc/sysconfig/tinyproxy
lockfile=/var/lock/subsys/tinyproxy
start() {
[ -x $exec ] || exit 5
[ -f $config ] || exit 6
echo -n $"Starting $prog: "
daemon $exec -c $config
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
restart() {
stop
start
}
reload() {
echo -n $"Reloading $prog: "
killproc $prog -HUP
echo
}
force_reload() {
restart
}
rh_status() {
status $prog
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
exit 2
esac
exit $?
添加权限,添加到开机自启动项目
chmod +x /etc/init.d/tinyproxy
chkconfig --add tinyproxy
chkconfig --level 2345 tinyproxy on
启动tinyproxy
/etc/init.d/tinyproxy start
查看端口是否启动
netstat -anpt | grep tinyproxy
使用PHP代码测试http代理是否可用