Skip to content

Tinyproxy:正向代理一键部署

通过 Tinyproxy 在有外网的机器上搭正向代理,供无外网服务器经 HTTP/HTTPS 代理上网(安装软件、下载源码等)。

一、代理服务器配置

1.1 一键安装脚本

创建脚本:

bash
vim proxy.sh

内容:

bash
#! /bin/bash

# 配置文件
CONFIG_FILE="/etc/tinyproxy/tinyproxy.conf"

# 下载
wget -P /opt/software https://github.com/tinyproxy/tinyproxy/releases/download/1.11.1/tinyproxy-1.11.1.tar.gz

# 解压
mkdir /opt/module
cd /opt/software
tar -zxvf tinyproxy-1.11.1.tar.gz -C /opt/module/

# 编译安装
cd /opt/module/tinyproxy-1.11.1/
yum -y install gcc

./configure
make
make install

# 添加配置
mkdir /etc/tinyproxy
#cp /usr/local/etc/tinyproxy/tinyproxy.conf /etc/tinyproxy/tinyproxy.conf
echo "User nobody" >> $CONFIG_FILE
echo "Group nobody" >> $CONFIG_FILE
echo "Port 8888" >> $CONFIG_FILE
echo "BindSame yes" >> $CONFIG_FILE
echo "Timeout 20" >> $CONFIG_FILE
echo "DefaultErrorFile \"/usr/local/share/tinyproxy/default.html\"" >> $CONFIG_FILE
echo "StatFile \"/usr/local/share/tinyproxy/stats.html\"" >> $CONFIG_FILE
echo "LogFile \"/var/log/tinyproxy/tinyproxy.log\"" >> $CONFIG_FILE
echo "LogLevel Info" >> $CONFIG_FILE
echo "MaxClients 500" >> $CONFIG_FILE
echo "ViaProxyName \"tinyproxy\"" >> $CONFIG_FILE
echo "BasicAuth admin 123456" >> $CONFIG_FILE

# 创建日志
mkdir /var/log/tinyproxy
touch /var/log/tinyproxy/tinyproxy.log
chmod 777 /var/log/tinyproxy/tinyproxy.log

echo '启动'
ps -ef|grep tinyproxy|grep -v grep|awk '{print "kill -9 "$2}'|sh
nohup tinyproxy -d -c /etc/tinyproxy/tinyproxy.conf > /dev/null 2>&1 &

赋权并执行:

bash
chmod 777 proxy.sh
sh proxy.sh

验证:

bash
tinyproxy -v

预期输出示例:

bash
tinyproxy 1.11.1

1.2 修改配置(可选)

bash
vim /etc/tinyproxy/tinyproxy.conf

参考配置:

bash
# 用户和组
User nobody
Group nobody

# 监听端口
Port 8888

# 在多网卡的情况下,设置出口 IP 是否与入口 IP 相同。默认情况下是关闭的
BindSame yes

# 超时时间
Timeout 20

DefaultErrorFile "/usr/local/share/tinyproxy/default.html"

StatFile "/usr/local/share/tinyproxy/stats.html"

# 指定日志位置
LogFile "/var/log/tinyproxy/tinyproxy.log"

LogLevel Info

# 设置最大客户端链接数
MaxClients 500

ViaProxyName "tinyproxy"

# 权限校验
BasicAuth admin 123456

准备日志文件:

bash
mkdir /var/log/tinyproxy
touch /var/log/tinyproxy/tinyproxy.log
chmod 777 /var/log/tinyproxy/tinyproxy.log

后台运行:

bash
nohup tinyproxy -d -c /etc/tinyproxy/tinyproxy.conf >/var/log/tinyproxy/tinyproxy.log 2>&1 &

1.3 控制脚本

bash
vim /usr/bin/tp

内容:

bash
#!/bin/bash
if [ $# -lt 1 ]
then
    echo "No Args Input..."
    exit ;
fi
case $1 in
"start")
        echo " =================== 启动 ==================="
        nohup tinyproxy -d -c /etc/tinyproxy/tinyproxy.conf > /dev/null 2>&1 &
;;
"stop")
        echo " =================== 关闭 ==================="
        ps -ef|grep tinyproxy|grep -v grep|awk '{print "kill -9 "$2}'|sh
;;
"restart")
        echo " =================== 重启 ==================="
        ps -ef|grep tinyproxy|grep -v grep|awk '{print "kill -9 "$2}'|sh
        nohup tinyproxy -d -c /etc/tinyproxy/tinyproxy.conf > /dev/null 2>&1 &
;;
"status")
        echo " =================== 状态 ==================="
        ps -ef|grep tinyproxy|grep -v grep
;;
*)
    echo "Input Args Error..."
;;
esac

赋权并测试:

bash
chmod 777 /usr/bin/tp
tp start
tp stop
tp status
tp restart

二、客户端(需要上网的服务器)配置

编辑 /etc/profile,追加代理环境变量(IP、账号密码按实际修改):

bash
#proxy
export http_proxy=http://admin:123456@10.2.1.104:8888/
export https_proxy=http://admin:123456@10.2.1.104:8888/

生效:

bash
source /etc/profile

三、测试下载或安装

bash
wget https://nginx.org/download/nginx-1.26.2.tar.gz

WARNING

示例中的 BasicAuth admin 123456 与代理地址仅为演示,上线请更换强密码,并限制可访问代理的源 IP。

最近更新