测试环境代理用 squid 正向代理并修改 hosts
squid 正向代理,用于生产环境的客户端,走测试环境的请求。
脚本文件
#!/bin/bash
echo '新建配置文件目录: /tmp/squid/'
mkdir -p /tmp/squid
rm -f /tmp/squid/hosts
rm -f /tmp/squid/access.log
touch /tmp/squid/hosts
touch /tmp/squid/access.log
# 从 gist 获取 "ALLOW ALL TO CONNECT ALL" 配置文件
if [ -e /tmp/squid/squid.conf ]; then
echo '配置文件 /tmp/squid/squid.conf 已存在,跳过'
else
echo '即将下载 ALLOW ALL TO CONNECT ALL 配置文件'
echo '该配置文件允许 squid 接受所有的客户端,代理所有的流量'
echo
echo '配置文件地址: https://gist.githubusercontent.com/hpcorona/5065634/raw/677d77ac1ea425793bbb1a901502cd01eb2942c5/squid.conf'
echo '下载至: /tmp/squid/squid.conf'
echo
echo '如果 gist 无法下载,自行下载或使用 ALL_PROXY'
echo '是否继续?'
read
export ALL_PROXY=${ALL_PROXY:-}
curl -Lo /tmp/squid/squid.conf https://gist.githubusercontent.com/hpcorona/5065634/raw/677d77ac1ea425793bbb1a901502cd01eb2942c5/squid.conf
fi
echo '即将启动 docker, 继续?'
read
# 启动 docker
echo '启动 docker squid'
docker run --rm \
--name squid \
-p 3128:3128 \
-v '/tmp/squid/squid.conf':'/etc/squid/squid.conf':'ro' \
-v '/tmp/squid/access.log':'/var/log/squid3/access.log' \
--entrypoint '/bin/bash' \
datadog/squid:3.5.12 \
-c \
'function appendfile { file="$1"; mkdir -p $(dirname "$file"); shift 1; for i in $(seq 1 $#); do echo "$1"; echo "$1" >> $file; shift; done; };'\
'appendfile /etc/hosts "$@";'\
'chmod 777 /var/log/squid3/access.log; exec /sbin/entrypoint.sh' \
'[$0 不会被解析,这里作为注解] 在下面添加 hosts,直接覆盖容器内部的 hosts 会导致 squid 出错' \
'127.0.0.1 luo3.org.cn'
使用方法
保存至文件 proxy.sh
,给执行权限。
按流程走
./proxy.sh
查看日志
docker exec squid tail -F /var/log/squid3/access.log
连通测试
ALL_PROXY=http://localhost:3128 curl http://luo3.org.cn