一、缓存概述
1.1、Squid的工作机制
缓存网页对象,减少重复请求
当服务器中有客户端需要的数据时:
a. 客户端向服务器发送数据请求;
b. 服务器检查自己的数据缓存;
c. 服务器在缓存中找到了用户想要的数据,取出数据;
d. 服务器将从缓存中取得的数据返回给客户端。
当服务器中没有客户端需要的数据时:
a. 客户端向服务器发送数据请求;
b. 服务器检查自己的数据缓存;
c. 服务器在缓存中没有找到用户想要的数据;
d. 服务器向Internet 上的远端服务器发送数据请求;
f. 远端服务器响应,返回相应的数据;
g. 服务器取得远端服务器的数据,返回给客户端,并保留一份到自己的数据缓存中。
1.2、的基本类型
1.2.1、传统:适用于Internet,需明确指定服务端
1.2.2、透明:客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理
1.3、使用的好处
1.3.1、提高Web访问速度
1.3.2、隐藏客户机的真实IP地址
二、squid主要组成部分
服务名 | squid |
---|---|
主程序 | /usr/sbin/squid |
配置目录 | /etc/squid |
主配置文件 | /etc/squid/squid.conf |
监听tcp端口号 | 3128 |
默认访问日志文件 | /var/log/squid/access.log |
三、Squid各种代理的定义
3.1、传统
环境
主机 | IP地址 |
---|---|
Squid服务器 | 20.0.0.10 |
Web网站服务(源主机 | ) 20.0.0.20 |
客户机 | 20.0.0.30 |
3.1.1、Squid服务器配置
①安装依赖环境
[root@squid ~]# yum -y install gcc gcc-c++ make
②编译安装squid服务
[root@squid ~]# tar zxf squid-3.5.23.tar.gz -C /opt
[root@squid ~]# cd /opt/squid-3.5.23/
[root@squid squid-3.5.23]# ./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" \ ###报错显示简体中文
> --enable-underscore \ ###支持下划线
> --enable-poll \ ###默认使用poll模式,开启epoll模式时提升性能
> --enable-gnuregex ###支持正则表达式
[root@squid squid-3.5.23]# make && make install
③优化路径
[root@squid squid-3.5.23]# ln -s /usr/local/squid/sbin/* /usr/local/sbin
[root@squid squid-3.5.23]# useradd -M -s /sbin/nologin squid ###创建不可登录的程序用户
[root@squid squid-3.5.23]# chown -R squid.squid /usr/local/squid/var
④修改配置文件,优化启动项
[root@squid ~]# vi /etc/squid.conf
cache_effective_user squid #添加 指定程序用户
cache_effective_group squid #添加 指定账号基本组
[root@squid ~]# squid -k parse ###检查配置文件语法
[root@squid ~]# squid -z ###初始化缓存目录
[root@squid ~]# squid ###启动服务
[root@squid ~]# netstat -anpt | grep squid
tcp6 0 0 :::3128 :::* LISTEN 104314/(squid-1)
⑤添加服务到service管理
[root@squid ~]# vi /etc/init.d/squid
#!/bin/bash
#chkconfig: 2345 90 25
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 ]