目录
一、squid概述
1.1、squid简介
Squid是一种用来缓冲Internet数据的软件。它是这样实现其功能的,接受来自人们需要下载的目标(object)的请求并适当地处理这些请求。也就是说,如果一个人想下载一web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器(比如:http://squid.nlanr.net/)并向这个页面发出请求。然后,Squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时,Squid可以简单地从磁盘中读到它,那样数据迅即就会传输到客户机上。当前的Squid可以处理HTTP,FTP,GOPHER,SSL和WAIS等协议。但它不能处理如POP,NNTP,RealAudio以及其它类型的东西。
- 用来做前置的Web缓存,加快用户访问Web的速度
- 代理内网用户访问互联网资源
- 设置访问控制策略,控制用户的上网行为
- 主要支持http、ftp等应用协议
1.2、代理工作的机制和好处
- 缓存网页对象,减少重复请求
- 访问速率提高
- 隐藏客户机真是ip地址
1.3、代理的基本类型
-
传统代理
适用于internet ,需要指定服务端,开启代理ip地址 -
透明代理
客户机不需要指定代理服务器的地址和端口,而通过默认路由,防火墙策略将web访问定向给代理服务器处理 -
反向代理
squid反向代理服务器中缓存了该请求的资源,则将该请求直接返回给客户端;
否则反向代理服务器将向后台的web服务器请求资源,然后将请求的应答返回给客户端,同时也将该应答缓存在本地,供下一个请求者使用 -
工作机制和优点
缓存网页对象,减少重复请求
将外网(互联网)请求,按照策略轮询或权重分配到内网web服务器
安全,隐藏,避免用户直接访问web服务器;
M6Ly9ibG9nLmNzZG4ubmV0L20wXzQ2NTYzOTM4,size_16,color_FFFFFF,t_70#pic_center)
1、客户端设置代理IP
2、客户请求的IP地址仍是WEB页面 ,不是squid代理服务器,因为客户端设置了一个代理IP。
3、客户端正常访问,但是会优先找代理服务器拿资源
4、如果缓存空间有资源,则不用找WEB拿资源
如果缓存空间没有资源squid去找WEB拿资源
二、搭建传统代理
2.1、传统代理搭建步骤
CentOS 7.4 | web页面(apache) | 20.0.0.23 |
---|---|---|
CentOS 7.4 | squid | 20.0.0.22 |
CentOS 7.4 | WIN10 | 20.0.0.88 |
2.1.1、搭建squid服务
把squid软件包传进去
[root@squid ~]# tar zxvf squid-3.4.6.tar.gz -C /opt
[root@squid ~]# cd /opt
[root@squid opt]# cd squid-3.4.6/
[root@squid squid-3.4.6]# yum -y install 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
--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 \ ## 在url中支持下划线
--enable-poll \ ## poll是Linux的字符设备驱动中的一个函数
--enable-gnuregex \ ## url支持正则表达式
[root@squid squid-3.4.6]# make && make install ## 进行编译并安装
[root@squid squid-3.4.6]# ln -s /usr/local/squid/sbin/squid /usr/local/sbin/ ## 做软连接,让squid命令便于被系统识别
[root@squid squid-3.4.6]# ll /usr/local/sbin/
总用量 34992
lrwxrwxrwx. 1 root root 22 10月 30 19:13 sbin -> /usr/local/squid/sbin/
-rwxr-xr-x. 2 root root 35829680 10月 30 19:08 squid
[root@squid squid-3.4.6]# useradd -M -s /sbin/nologin squid ## 创建squid用户,并指定家目录,指定shell环境,无法登录终端
[root@squid squid-3.4.6]# chown -R squid.squid /usr/local/squid/var ## 给权限,有一个run目录,跑pid进程文件的
2.1.2、修改分配缓存空间的配置文件
[root@squid squid-3.4.6]# vim /etc/squid.conf ## 主要分配缓存空间的配置文件
56: http_access allow all ## 添加默认允许通过
57 :#http_access deny all ## 把原来的默认拒绝注释掉
60: http_port 3128 ## squid 端口号 3128
61: cache_effective_user squid ## 缓存管理用户 squid
62: cache_effective_group squid ## 缓存管理组 squid
68:coredump_dir /usr/local/squid/var/cache/squid ## 是一个容灾备份的目录
==》》wq
[root@squid squid-3.4.6]# squid -k parse ## 查看语法有无错误
[root@squid squid-3.4.6]# squid -z ## 语法没有问题后,初始化缓存,等几秒敲回车即可
[root@squid squid-3.4.6]# squid #