TinyProxy是个非常便利,及容易架设的HTTP代理,和squid相比,tinyproxy更小,更好使用。


线上的一台Google代理服务器用的是meow,也是一款http代理软件。但是有一个缺点,需要后台启动,而且,运行一段时间,进程就会挂掉。所以不得不写个脚本,来监控进程,防止挂掉。


准备搭建一个爬虫服务器,买了一个×××,可以随时切换IP的。后端PHP程序只需要调用这台的http代理就可以了。

http代理不能断,所以选择了tinyproxy。


安装方法,有2中。

  1. yum install -y tinyproxy

  2. 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代理是否可用