您的位置:首页 > 运维架构 > 反向代理

Squid之正向代理&反向代理

2019-05-28 20:42 966 查看

Squid

  • Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。
  • squid是一种用来缓存Internet数据的软件。接受来自人们需要下载的目标(object)的请求并适当的处理这些请求。也就是说,如果一个人想下载一个web界面,他请求squid为他取得这个页面。squid随之连接到远程服务器并向这个页面发出请求。然后,squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时, squid可以简单的从磁盘中读到它,那样数据会立即传输到客户机上。
  • Squid代理服务器工作在TCP/IP应用层。

Squid代理的作用

  • 通过缓存的方式为用户提供Web访问加速
  • 对用户的Web访问进行过滤控制

Squid主要组成部分

  • 服务名:squid
  • 主程序:/usr/sbin/squid
  • 配置目录:/etc/squid
  • 主配置文件:/etc/squid/squid.conf
  • 监听tcp端口号:3128
  • 默认访问日志文件:/var/log/squid/access.log
    详细配置信息点击这里

工作流程

  • 当代理服务器中有客户端需要的数据时:
    1.客户端向代理服务器发送数据请求;2. 代理服务器检查自己的数据缓存;3. 代理服务器在缓存中找到了用户想要的数据,取出数据;4.代理服务器将从缓存中取得的数据返回给客户端。
  • 当代理服务器中没有客户端需要的数据时:
    1.客户端向代理服务器发送数据请求; 2.代理服务器检查自己的数据缓存;3.代理服务器在缓存中没有找到用户想要的数据;4.代理服务器向Internet 上的远端服务器发送数据请求;5.远端服务器响应,返回相应的数据;6.代理服务器取得远端服务器的数据,返回给客户端,并保留一份到自己的数据缓存中。

正向代理

  • 是客户端主动做的。
  • 正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
  • 比如我们大陆想要访问Youtube,但是因为国家政策的原因我们大陆公民不能直接访问,而香港的用户可以直接访问,我们就可以让香港去访问Youtube然后缓存一份而后我们再去访问香港。在这里,香港就是代理squid,china是客户端,china不能访问youtube,但香港可以,所以让香港给我取我要的东西,这样是正向代理。

实验

  • 首先,真机要能上网,同时需要两台虚拟机,一台作为代理服务器squid的虚拟机也需要能上网。我们给代理服务器squid虚拟机配置网络,同时更改主机名,搭建yum仓库。
  • 在squid虚拟机中下载squid服务,并修改配置文件为以下,重启squid服务,并关闭防火墙。
yum search squid
yum install squid.x86_64
systemctl start squid
netstat -antlupe | grep squid   ##查看squid的端口,是3128
vim /etc/squid/squid.conf    ##修改配置文件
56 http_access allow all     56行,允许所有
62 cache_dir ufs /var/spool/squid 100 16 256    62行,取消注释
缓存大小100M 16个一级目录 256个二级目录
缓存不会一直存在在客户端,会定期清理

systemctl restart squid
systemctl stop firewalld.service


  • 在客户端主机,该主机时没有联网的,在该主机的浏览器中设置:






反向代理

  • CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
  • 反向代理可以降低原始WEB服务器的负载。反向代理服务器承担了对原始WEB服务器的静态页面的请求,防止原始服务器过载。它位于WEB服务器和Internet之间,处理所有对WEB服务器的请求,组织了WEB服务器和Internet的直接通信。如果互联网用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。如果没有缓冲则先向WEB服务器发出请求,取回数据,本地缓存后再发给用户。这种方式通过降低了WEB服务器的请求数从而降低了WEB服务器的负载。
  • 反向代理:是企业做的不是客户主动做的。
  • 我们有两台服务器分别在西安和深圳,那我们西安的用户访问哪个快?
    我们访问时数据的传输速度是一样的,都是3乘10的八次方,但是访问在西安的服务器因为路由转发次数少,所以更快。
  • 西安的服务器访问深圳的服务器快还是我们西安的普通用户访问深圳的服务器块?当然是西安的服务器访问深圳服务器更快,带宽不一样,别人是专线,每年交的钱多。
  • 我们设置代理服务器的目的是为了缓解深圳服务器的压力,同时加快网络传输效率,如果所有用户都访问深圳的服务器,服务器的压力有很大,宕机的概率会变大很多,所以我们可以设置代理服务器西安,让西安的用户访问西安的服务器,如果西安的服务器没有用户要访问的资源,再去向深圳的要,然后缓存下来,下次就可直接访问了。

实验

  • 在原来有squid的虚拟机中,修改主机名为xian,他是代理服务器,是没有http服务的,所以
    netstat -antlupe | grep 80
    ,也没有80端口。
  • 修改xian虚拟机的squid配置文件,并重启服务
vim /etc/squid/squid.conf
56 http_access allow all
59 http_port 80  vhost  vport         ##http端口80  虚拟主机 虚拟端口
60 cache_peer 172.25.254.224  parent  80  0  proxy-only
ip为有http服务主机的ip,也就是远程主机shenzhen的ip
parent父级
80端口
0表示备用,出了问题去找谁,0表示不找任何人
proxy-only 只做代理
63 cache_dir ufs /var/spool/squid 100 16 256

systemctl restart squid
  • 我们可以通过
    vim /usr/share/doc/squid-3.3.8/squid.conf.documented
    查看具体的说明。
  • 在另一台虚拟机上,修改他的主机名为shenzhen,安装http,开启服务,关方火墙,并新建默认发布文件,重启服务,测试默认发布文件在浏览器中能否访问的到。
hostnamectl set-hostname shenzhen_server.westos.com
yum install httpd -y
systemctl start httpd
systemctl enable httpd
systemctl stop firewalld.service

vim /var/www/html/index.html    ##中写入:
<h1>hello,I'm shenzhen_server!</h1>
systemctl restart httpd.service

  • 修改真机的本地解析文件,测试:
vim /etc/hosts   ##中写入:
172.25.254.124   www.westos.com

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: