一:squid代理服务器概述
1.1:squid简介
- squid是一个支持http、https、ftp等服务的web缓存代理软件,通过缓存页面实现降低宽带占用提高页面响应时间。
- 另外,squid提供访问控制,squid的缓存页面存放在内存和硬盘中,在选择服务器时候内存和硬盘要求高,对于数据过期更新,需要不定期的清理缓存的数据。
1.2:squid代理请求流程
- 客户端访问squid代理服务器
- 代理服务器代表客户端访问后端真实服务器
- 真实服务器把数据返回给squid代理服务器
- 代理服务器吧响应数据发送给客户端,并把页面缓存在本地的内存及磁盘中
- 客户端再次请求相同数据是,代理服务器直接将缓存的数据返回给客户端
1.3:squid代理服务类型
- 正向代理:主要应用于内部网络访问外部网络时缓存页面数据,提供统一网络接口连接到外网,所有的内网客户端无需配置外网IP即可通过squid上网,在这种模式下,squid主要负责提供缓存加速及访问控制的功能
- 透明代理:与正向代理类似,不需要终端用户进行特殊设置,需要结合网管部署,所有操作均由管理员在网关服务器和代理服务器进行设置,这些对用户透明的。
- 反向代理:反向代理集合智能DNS可以实现基本的CDN框架,此时的squid代理服务器可以直接代表后端服务器提供页面访问,用户并感觉不到自己是直接访问代理服务器,有利于减轻真实服务器压力,提高并发和响应速度。
二:部署环境实验操作
2.1:环境案例
主机 |
IP地址 |
squid |
20.0.0.20 |
web1 |
20.0.0.21 |
web2 |
20.0.0.22 |
2.2:安装squid服务
--------------------------------------------安装squid服务-----------------------------------------------------------------
squid服务器:
[root@localhost ~]# hostnamectl set-hostname squid #设置主机名squid
[root@localhost ~]# su #刷新
web服务器:
[root@localhost ~]# hostnamectl set-hostname web #设置主机名web
[root@localhost ~]# su
squid服务器配置:
将软件包上传到服务器中
[root@squid ~]# tar zxvf squid-3.4.6.tar.gz -C /opt/ ###将包解压到/opt目录下
[root@squid ~]# cd /opt/squid-3.4.6/
[root@squid squid-3.4.6]# yum -y install gcc gcc-c++ ###安装编译工具gcc、gcc-c++
[root@squid squid-3.4.6]# ./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
--------------------------------------------上面配置的解释---------------------------------------------------------
./configure \
--prefix=/usr/local/squid \ #指定安装路径
--sysconfdir=/etc \ #配置文件所存在的目录
--enable-arp-acl \ #启用acl访问控制列表
--enable-linux-netfilter \ #内核过滤表
--enable-linux-tproxy \ #支持透明代理
--enable-async-io=100 \ #io的优化
--enable-err-language="Simplify_Chinese" \ #支持err语言(也就是报错是简体中文形式)
--enable-underscore \ #url支持下划线
--enable-poll \ #字符设备驱动函数(内核函数)
--enable-gnuregex \ #支持正则表达式
----------------------------------------------------------------------------------------------------------
[root@squid squid-3.4.6]# make -j4 && make install #编译并安装
[root@squid squid-3.4.6]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/ #让可用命令让系统所能识别
[root@squid squid-3.4.6]# useradd -M -s /sbin/nologin squid ###建立一个程序性用户
[root@squid squid-3.4.6]# chown -R squid.squid /usr/local/squid/var/ ###给用户一个权限
[root@squid squid-3.4.6]# vim /etc/squid.conf #改主配置文件
#http_access deny all #默认拒绝所有,注销掉,或者放下面,从上往下读,不会拒绝掉
http_access allow all #加上这条allow,允许所有终端来访问,并且可用访问其他的源端服务器
http_port 3128
cache_effective_user squid ###在端口下面加上缓存管理用户
cache_effective_group squid ###在端口下面加上缓存管理组
[root@squid squid-3.4.6]# squid -k parse ###检查配置文件语法
[root@squid squid-3.4.6]# squid -z ###初始化缓存目录
[root@squid squid-3.4.6]# squid ###启动服务
[root@squid squid-3.4.6]# netstat -anpt | grep 3128 ###可用查看一下启动了没
tcp6 0 0 :::3128 :::* LISTEN 40026/(squid-1)
[root@squid squid-3.4.6]#