广泛使用的开源代理服务器和Web缓存加速器
Squid两层代理转发
前言
Squid是一个高性能的代理缓存服务器,一款强大的正向代理服务器,有Windows版和Linux版,支持FTP、gopher、HTTPS和HTTP协议。Nginx两层正向代理转发,要么四层代理只支持Https协议,要么七层代理只支持Http协议,折腾了一下Squid,可以同时支持Https/Http协议的多层转发。
Win版正向代理
下载后安装即可,默认配置文件在D:\Squid\etc\squid\squid.conf
,默认端口3128,放开防火墙后,双击打开默认配置即可支持Http/Https的正向代理。
在另外一台机器,通过设置系统代理,或者curl http://www.baidu.com -v -x 10.122.10.98:3128
,或者curl https://www.baidu.com -v -x 10.122.10.98:3128
访问正常。
Linux版正向代理转发两次
Client Machine C –> Squid Machine B –> Squid Machine A –> target website1
安装
# 解压
tar -zxvf squid-5.10.tar.gz
# 配置
./configure --prefix=/usr/local/squid
# make很慢,使用多核编译
make -j4 && make install
# Kylin系统需要修改权限,读和执行权限,Squid默认用nobody用户启动
chmod -R 755 `find /usr/local/squid -type d`
chown -R nobody:nobody /usr/local/squid/var/cache
chown -R nobody:nobody /usr/local/squid/var/logs
chown -R nobody:nobody /usr/local/squid/var/run
# 放开缓存,配置文件放开cache_dir前注释,执行squid -z
# cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256
# 建立磁盘交换目录
squid -z
# 禁止以后台守护进程形式运行,可以看到输出的错误日志
squid -N
Centos直接yum install squid
进行安装即可,主配置文件在/etc/squid/squid.conf
,默认端口3128。
常用命令
# 启动
systemctl start squid
# 开机自启
systemctl enable squid
# 查看Squid状态
systemctl status squid
# 重启
systemctl restart squid
# 关闭
systemctl stop squid
# 查看帮助
squid -h
# 查看版本
squid -v
# 检查语法
squid -k parse
# 查看日志
tail -f /var/log/squid/acess.log
# 修改配置文件
vim /etc/squid/squid.conf
# 或者,启动
squid
# 通过squid启动,关闭
squid -k shutdown
# 通过squid启动,载入新的配置文件
squid -k reconfigure
配置两层转发
# 指定另一台Squid正向代理服务器的地址和端口
#cache_peer 10.122.10.98 parent 3128 0 no-query default
# 指定另一台CCproxy正向代理服务器的地址和端口,并配置用户和密码
cache_peer 10.122.10.98 parent 808 0 no-query default login=lideyu:lideyu
never_direct allow all
配置日志
Squid日志默认定义好的几种日志格式如下,不需要重新定义,参考3。
logformat squid %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt
logformat common %>a %[ui %[un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh
logformat combined %>a %[ui %[un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
logformat referrer %ts.%03tu %>a %{Referer}>h %ru
logformat useragent %>a [%tl] "%{User-Agent}>h"
Squid access日志默认是以毫秒为单位计的,可以在squid.conf中修改为combined方式。
# 日志
access_log /usr/local/squid/var/logs/access.log combined
测试
在另外一台机器,通过设置系统代理,或者curl http://www.baidu.com -v -x 10.122.10.218:3128
,或者curl https://www.baidu.com -v -x 10.122.10.218:3128
访问正常。