squid介绍

官网地址:http://www.squid-cache.org/


Squid cache(简称为 Squid)是一个流行的自由软件(GNU 通用公共许可证)的代理服务器和 Web 缓存服务器。Squid 有广泛的用途,从作为网页服务器的前置 cache 服务器缓存相关请求来提高 Web 服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网。Squid 主要设计用于在 Unix 一类系统运行。

Squid 的发展历史相当悠久,功能也相当完善。除了 HTTP 外,对于 FTP 与 HTTPS 的支援也相当好,在 3.0 测试版中也支援了 IPv6。

Squid主要提供缓存加速、应用层过滤控制的功能。

代理的工作机制

(1)代替客户机向网站请求数据,从而可以隐藏用户的真实IP地址。

(2)将获得的网页数据(静态 Web 元素)保存到缓存中并发送给客户机,以便下次请求相同的数据时快速响应。

代理服务器的概念及其作用

代理服务器是一个位于客户端和原始(资源)服务器之间的服务器,为了从原始服务器取得内容,客户端向代理服务器发送一个请求并指定目标原始服务器,然后代理服务器向原始服务器转交请求并将获得的内容返回给客户端。

缓存代理对于Web至关重要,尤其对于大型高负载Web站点。缓存可作为性能优化的一个重要手段,可以极大减轻后端服务器的负载。通常对于静态资源,即较少经常更新的资源,如图片,css或js等进行缓存,从而在每次刷新浏览器的时候,不用重新请求,而是从缓存里面读取,这样就可以减轻服务器的压力。

主要作用

(1)资源获取:代替客户端实现从原始服务器的资源获取

(2)加速访问:代理服务器可能离原始服务器更近,从而起到一定的加速作用

(3)缓存作用:代理服务器保存从原始服务器所获取的资源,从而实现客户端快速的获取

(4)隐藏真实地址:代理服务器代替客户端去获取原始服务器资源,从而隐藏客户端真实信息

squid的三种代理类型

squid软件主要有三种代理类型:

  • 正向代理:代理内部主机上网,共享上网,缓存,控制内网用户上网行为等功能(客户端需要设置代理服务器的IP和代理端口)。
  • 透明代理:客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理。
  • 反向代理:如果 Squid 反向代理服务器中缓存了该请求的资源,则将该请求的资源直接返回给客户端;否则反向代理服务器将向后台的 WEB 服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用。

正向代理分析图:

反向代理分析图:

squid安装和配置文件说明安装软件

# yum镜像仓库里有squid的软件包yum -y install squid# squid配置初始化cat >> /etc/squid/squid.conf<< EOFcache_mem 64 MBmaximum_object_size 4 MBmaximum_object_size_in_memory 4096 KBcache_dir ufs /var/spool/squid 100 16 256access_log /var/log/squid/access.logEOF# squid初始化squid -z# 启动squid并设置为开机启动service squid start && systemctl enable squid# 检查squid是否正常运行netstat -ntlp | grep squid# 如果防火墙开启的话,放开3128端口firewall-cmd --zone=public --add-service=squid --permanent

软件的文件列表

/etc/squid/squid.conf           # 配置文件/etc/rc.d/init.d/squid          # 启动脚本/usr/sbin/squid                 # 二进制命令/usr/share/doc/squid-3.1.10     # 手册/var/log/squid                  # 日志目录/var/spool/squid                # 缓存目录

配置文件说明

# cat /etc/squid/squid.conf#####设置监听的IP与端口号http_port 3128#####额外提供给squid使用的内存大小,默认256 MBcache_mem   64 MB   #####设置squid磁盘缓存最大文件,超过4M的文件不保存到硬盘maximum_object_size 4 MB   #####设置squid磁盘缓存最小文件minimum_object_size 0 KB #####设置squid内存缓存最大文件,超过4M的文件不保存到内存maximum_object_size_in_memory 4096 KB  #####定义squid的cache存放路径 、cache目录容量(单位M)、一级缓存目录数量、二级缓存目录数量,此处的100 一定要大于 cache_mem 否则报错。cache_dir ufs /var/spool/squid 100 16 256  #####log文件日志格式logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %h" "%{User-Agent}>h" %Ss:%Sh#####log文件存放路径和日志格式access_log /var/log/squid/access.log combined#####设置缓存日志cache_log /var/log/squid/cache.log#####log轮转60天logfile_rotate 60#####cache目录使用量大于95%时,开始清理旧的cachecache_swap_high 95#####cache目录清理到90%时停止cache_swap_low 90#####定义本地网段acl localnet src 192.168.1.0/24#####允许本地网段使用http_access allow localnet#####拒绝所有http_access deny all#####主机名visible_hostname xxx.xxxx.xxxx#####管理员邮箱cache_mgr 123456@qq.com

正向代理客户端配置Windows客户端配置代理:

Internet 选项 > 连接 > 局域网设置 ”,在代理服务器区域,按照以下格式设置:

Linux客户端:

先创建并修改/etc/profile.d/proxy.sh文件

# 创建proxy.sh文件touch /etc/profile.d/proxy.sh

编辑proxy.sh文件

# 进入profile.d目录cd /etc/profile.d/# 编辑proxy.sh文件vim proxy.sh

添加下列内容

# squid正向代理只支持http、https、ftp协议,把下面的proxy_server_ip更换为自己搭建的squid服务器IPexport https_proxy=http://proxy_server_ip:3128export http_proxy=http://proxy_server_ip:3128export ftp_proxy=http://proxy_server_ip:3128

执行source /etc/profile使其生效

# 执行source /etc/profilesource /etc/profile

配置完成