实验:squid代理服务器

椰子ya Linux 2020-10-02

一、简介
1、Squid是基于Unix的代理服务器(proxy server),它缓存比起点源点更接近请求者的互联网内容。Squid支持缓存多种不同的网络对象,包括那些通过HTTP和FTP访问的人。缓存频繁要求网页、媒体文件和其它加速回答时间并减少带宽堵塞的内容。
2、Squid代理服务器(Squid proxy server)一般和原始文件一起安装在单独服务器而不是网络服务器上。Squid通过追踪网络中的对象运用起作用。Squid最初担当中介,仅仅是把客户要求传递到服务器并存储要求对象的拷贝。如果同一个客户或同一批客户在要求还在Squid缓存(cache)时要求相同的对象,Squid就可以立刻服务,加速下载并保存带宽。
3、squid是一种用来缓存Internet数据的软件。接受来自人们需要下载的目标(object)的请求并适当的处理这些请求。也就是说,如果一个人想下载一web界面,他请求squid为他取得这个页面。squid随之连接到远程服务器并向这个页面发出请求。然后,squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时, squid可以简单的从磁盘中读到它,那样数据会立即传输到客户机子上。

二、代理类型

普通代理:需要客户机在浏览器中指定代理服务器的地址、端口;

透明代理:适用于企业的网关主机(共享接入Internet)中,客户机不需要指定代理服务器地址、端口等信息,代理服务器需要设置防火墙策略将客户机的Web访问数据转交给代理服务程序处理;

反向代理:是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

三、三种代理在不同场景中的应用案例
小布丁吃西瓜
qi __ jie


四、通过实验实现反向代理+简单实现负载均衡
屏幕截图 2020-10-03 160801.png
web服务器已提前配置好
1、在代理服务器上安装squid

yum -y install squid

2、修改配置文件

vim /etc/squid/squid.conf
http_port 80 accel vhost 
http_access allow all 
cache_peer 39.105.28.1 parent 80 0 originserver name=1 
cache_peer 39.105.28.2 parent 80 0 originserver name=2 
cache_peer_domain 1 www.liukai.asia 
cache_peer_domain 2 liukai.asia
visible_hostname squid.david.dev 
cache_mgr xxx@qq.com

保存并重启客户端
报错

2020/10/03 16:32:07| ERROR: Directive 'cache_peer_domain' is obsolete.
2020/10/03 16:32:07| ERROR: Directive 'cache_peer_domain' is obsolete.

cache_peer_domain已过时,查了一下官网文档这条语句在3.5以上版本不不可用
wtf



squid配置-cache_peer和cache_peer_domain两种配置方式
反向代理单IP多域名

cache_peer 192.168.1.50 parent 81 0 no-query originserver weight=1 name=a
cache_peer 192.168.1.50 parent 82 0 no-query originserver weight=1 name=b
cache_peer 192.168.1.50 parent 80 0 no-query originserver weight=1 name=c
cache_peer_domain a www.serverA.com
cache_peer_domain b www.serverB.com
cache_peer_domain c www.serverC.com

以上六行配置表示:
从客户端过来的请求,如果是 www.serverA.com,则Squid向 Server 192.168.1.50的端口81发送请求;
从客户端过来的请求,如果是 www.serverB.com,则Squid向 Server 192.168.1.50的端口82发送请求;
从客户端过来的请求,如果是 www.serverC.com,则Squid向 Server 192.168.1.50的端口80发送请求;
换句话说:设定不同域名转发到不同的cache_peer上,如果没有这项.不同的域名可能被分发到同一台服务
器(或同一台服务器的端口)上.
name=a表示给cache_peer一个别名

cache_peer_access a allow all
cache_peer_access b allow all
cache_peer_access c allow all

设置访问权限,允许所有外部客户端访问 a b c
如果是cache_peer_access a allow allowuser
表示只允许allowuser访问 www.serverA.com

反向代理多IP单域名

acl user1 src 192.168.2.68/32
acl user2 src 192.168.2.94/32

定义两个user IP

cache_peer 192.168.2.172 parent 80 0 no-query no-digest originserver name=www1  sourcehash
cache_peer 192.168.2.173 parent 81 0 no-query no-digest originserver name=www2  sourcehash
cache_peer_domain www1 www.domain.com
cache_peer_domain www2 www.domian.com

表明对www.domian.com的请求,squid向192.168.2.172的80端口和192.168.2.173的81端口发出请求

cache_peer_access www1 allow user1
cache_peer_access www2 allow user2

允许user1访问192.168.2.172的80端口
允许user2访问192.168.2.173的81端口

PREV
实验:Proxy server
NEXT
squid配置文件详解