squid安装
xshell登录
1.使用创建的用户登录 2.登录后切换到root账户:
sudo su
输入当前用户密码
关闭防护墙
systemctl stop firewalld
systemctl disable firewalld
Setenforce 0
安装依赖环境
查看当前有无依赖
gcc --version
make -version
有就不用安装
#yum -y install gcc gcc-c++ make
apt-get -y install make
编译安装Squid
上传软件包squid-3.5.28.tar到/opt目录下 1.解压缩
cd /opt
tar zxvf squid-3.5.28.tar.gz
2.编译
cd squid-3.5.28/
./configure --prefix=/usr/local/squid \
--sysconfdir=/etc \
--enable-arp-acl \
--enable-linux-netfilter \
--enable-linux-tproxy \
--enable-async-io=100 \
--enable-err-language="Simplify_Chinese" \
--enable-underscore \
--enable-poll \
--enable-gnuregex \
--disable-internal-dns
3.make编译安装
make -j2 && make install
命令 | 作用 |
---|
./configure-prefix=/usr/local/squid | 安装目录 | –sysconfdir=/etc/ | 单独将配置文件修改到/etc目录下 | –enable-arp-acl | 可在ACL中设置通过MAC地址进行管理,防止IP欺骗 | –enable-linux-netfilter | 使用内核过滤 | –enable-linux-tproxy | 支持透明模式 | –enable-async-io=100 | 异步I/O,提升储存性能,值可修改 | –enable-err-language=“Simplify Chinese” | 错误信息的显示语言 | –enable-underscore | 允许URL中有下划线 | –enable-poll | 使用Poll()模式,提升性能 | –enable-gnuregex | 使用GNU正则表达式 | make -j2 && make install | 使用2核进行编译 |
创建软连接及用户,改组
命令 | 作用 |
---|
ln -s /usr/local/squid/sbin/* /usr/local/sbin | 创建链接文件,优化路径 | useradd -M -s /sbin/nologin squid | 创建程序用户、组 | chown -R squid:squid /usr/local/squid/var/ | 改变目录属主 |
ln -s /usr/local/squid/sbin
修改Squid的配置文件
命令 | 作用 |
---|
http_access allow all | 放在http_access deny all之前,允许任意客户机使用代理服务,控制规则自,上而下匹配 | http_port 3128 | 用来指定代理服务监听的地址和端口(默认的端口号为3128) | cache_effective_user squid | 添加,指定程序用户,用来设置初始化、运行时缓存的账号,否则启动不成功 | cache_effective_group squid | 添加,指定账号基本组 | coredump_dir /usr/local/squid/var/cache/squid | 指定缓存文件目录 |
vim /etc/squid.conf
-56行--插入
http_access allow all
http_access deny all
http_port 3128
cache_effective_user squid
cache_effective_group squid
68行
coredump_dir /usr/local/squid/var/cache/squid
squid检查启动
命令 | 作用 |
---|
squid -k parse | 检查配置文件 | squid -k rec | 重新加载配置文件 | squid -z | 初始化缓存目录 | squid | 启动squid服务 |
netstat -anpt | grep squid ##确认squid服务处于正常监听状态
squid -k parse
squid -k rec
squid -z
squid
netstat -anpt | grep squid
编写Squid服务脚本
vim /etc/init.d/squid
#!/bin/bash
#chkconfig: 35 90 25
#config:/etc/squid.conf
#pidfile:/usr/local/squid/var/run/squid.pid
# Description: Squid - Internet Object Cache
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"
case "$1" in
start)
netstat -natp | grep squid &> /dev/null
if [ $? -eq 0 ]
then
echo "squid is running"
else
echo "正在启动 squid..."
$CMD
fi
;;
stop)
$CMD -k kill &> /dev/null
rm -rf $PID &> /dev/null
;;
status)
[ -f $PID ] &> /dev/null
if [ $? -eq 0 ]
then
netstat -natp | grep squid
else
echo "squid is not running"
fi
;;
restart)
$0 stop &>/dev/null
echo "正在关闭Squid.. . "
$0 start &>/dev/null
echo "正在启动Squid..."
;;
reload)
$CMD -k reconfigure
;;
check)
$CMD -k parse
;;
*)
echo "用法:{start|stop|restart|reload|check|status}"
esac
服务启动,检查
chmod +x /etc/init.d/squid
chkconfig --add squid
chkconfig squid on
service squid restart ##测试正常
配置反向代理
注意:(一台squid代理多个后端web,并使用不同域名访问不同的IP)
开启防火墙、本地关闭HTTPD
systemctl stop firewalld systemctl stop httpd iptables -F iptables -t nat -F iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
修改squid配置文件
vim /etc/squid.conf
56行--修改,插入-------
no_cache deny all
http_access allow all
http_access deny all
61行--修改,插入-------
# Squid normally listens to port 3128
#http_port 3128
http_port 80 accel vhost vport
http_port squidip:80 accel vhost vport
cache_peer 后端webIP parent 后端web端口 0 no-query originserver round-robin name=web1
cache_peer 后端webIP parent 后端web端口 0 no-query originserver round-robin name=web2
cache_peer_domain web1 www.ceshiweb.com
cache_peer_domain web2 www.sunkai.com
cache_effective_user squid
cache_effective_group squid
cache_mem 64 MB
reply_body_max_size 10 MB
maximum_object_size 4096 KB
注意:一台squid配置多台web转发的配置如上
反向代理加速模式,这个时候squid在80端口监听请求,同时和web server的请求端口(vhostvport)绑定,这个时候请求到了squid, squid是不用转发请求的,而是直接要么从缓存中拿数据要么向绑定的端口直接请求数据。
代码解释
代码 | 说明 |
---|
accel | 反向代理加速模式 | vhost | 支持域名或主机名来表示代理节点 | vport | 支持IP和端口来表示代理节点 | parent | 代表为父节点,上下关系,非平级关系 | 80 | 代理内部web服务器的80端口 | 0 | 没有使用icp,表示就一台squid服务器 | no-query | 不做查询操作,直接获取数据 | oriqinserver | 指定是源服务器 | round-robin | 指定squid通过轮询方式将请求分发到其中一台父节点 | name | 设置别名 | http_port 80 accel vhost vport | squid从一个缓存变成了一个Web服务器 |
启动squid服务
squid -z
systemctl stop httpd
service squid restart
谷歌浏览器设置代理
设置–》系统–》打开代理设置–》设置代理
设置squid代理,查看日志文件中来访IP变化
注意:(1)先清除客户端的浏览器缓存 (2)手动设置代理–开启使用代理服务器–设置代理地址和端口–保存 (3)再次访问web服务器,查看日志文件的变化;这时显示的来访IP变成了squid代理服务器地址 代理ip为squid服务器ip。 端口号是squid.conf文件定义的80端口
在windows上配置地址映射
进入C:\Windows\System32\drivers\etc\hosts 在最后一行添加squid 的ip和域名
squidip www.ceshiweb.com squidip www.sunkai.com
注意要给予hosts文件完全权限
squid服务器查看访问日志信息
tail -f /usr/local/squid/var/logs/access.log
web1服务器查看访问日志信息
tail -f /var/log/httpd/access_log
|