1 正向代理
1.1 什么是正向代理?
正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性(由mod_cache提供)减少网络使用率
和反向代理不同之处在于,典型的正向代理是一种最终用户知道并主动使用的代理方式。例如Chrome浏览器中安装了switchysharp以后,通过switchysharp方便地进行代理转发服务。而为此用户必须要提前在switchysharp中做好设置才能达到相应的效果。
1.2 正向代理的实现
正向代理:
desktop虚拟机可以上网(改网关),写 /etc/resolv.conf解析
改主机名:hostnamectl set-hostname squid.westos.com
用它来做正向代理服务器:
yum install squid -y #下载软件
systemctl start squid
netstat -antlupe | grep squid #查看端口
vim /etc/squid/squid.conf
http_access allow all
catch_dir ufs /var/spool/squid 100 16 265 #打开缓存目录
systemctl restart squid
在想利用代理的浏览器(server虚拟机)上选择edit--->perferencrs--->advanced--->network---> Http proxy 172.252.54.233 port 3128
在server虚拟机仍然不能ping通,但是可以浏览器访问了, 相当于直接访问的133 3128端口
2 反向代理
2.1 什么是反向代理?
通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。由于外部网络上的主机并不会配置并使用这个代理服务器,普通代理服务器也被设计为在Internet上搜寻多个不确定的服务器,而不是针对Internet上多个客户机的请求访问某一个固定的服务器,因此普通的Web代理服务器不支持外部对内部网络的访问请求。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。 此时代理服务器对外就表现为一个Web服务器,外部网络就可以简单把它当作一个标准的Web服务器而不需要特定的配置。不同之处在于,这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。
与前向代理不同,前向代理作为客户端的代理,将从互联网上获取的资源返回给一个或多个的客户端,服务端(如Web服务器)只知道代理的IP地址而不知道客户端的IP地址;而反向代理是作为服务器端(如Web服务器)的代理使用,而不是客户端。客户端借由前向代理可以间接访问很多不同互联网服务器(簇)的资源,而反向代理是供很多客户端都通过它间接访问不同后端服务器上的资源,而不需要知道这些后端服务器的存在,而以为所有资源都来自于这个反向代理服务器。
2.2 反向代理的实例:CDN
CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置反向代理节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
2.3 反向代理的实现
假设企业在深圳有一台主服务器,企业在西安设置一台反向代理服务器,当西安的客户访问深圳的服务器时,带它去访西安的服务器,若西安的服务器中有需要的缓存直接访问,没有需要的资源则先去深圳主服务器然后提供给客户。这一套缓存体系为CDN高速缓存,代理服务器为反向代理。
我们进行这样设置:
深圳主服务器(172.25.254.133):
yum install httpd -y
systemctl start httpd
systemctl stop firewalld
cd /var/www/html
vim index.html
西安的服务器(172.25.254.233):
写squid的配置文件,不能有http,不然httpd使用80端口,和配置会冲突
vim /etc/squid/squid.conf
http_port 80 vhost vport
cache_peer 172.25.254.133 parent 80 0 proxy-only
systemctl restart squid
systemctl stop firewalld
西安的客户端(172.25.254.72):
vim /etc/hosts
172.25.254.233 www.westos.com
测试:在客户端浏览器www.westos.com 可以看到133上的数据
http://172.25.254.233可以看到133的数据
2.4 反向代理的负载均衡
负载分担:
为了缓解西安服务器(172.25.254.233)的负担,设置多台深圳的acaphe服务器,分担负载
深圳主服务器1(172.25.254.133):
yum install httpd -y
systemctl start httpd
systemctl stop firewalld
cd /var/www/html
vim index.html
深圳主服务器2(172.25.254.200):
yum install httpd -y
systemctl start httpd
systemctl stop firewalld
cd /var/www/html
vim index.html
西安服务器(172.25.254.233),写squid的配置文件
不能有http,不然httpd使用80端口,和配置会冲突
vim /etc/squid/squid.conf
http_port 80 vhost vpost
cache_peer 172.25.254.133 parent 80 0 proxy-only no-query round-robin originserver name=web1
cache_peer 172.25.254.200 parent 80 0 proxy-only no-query round-robin originserver name=web2 weight=2
cache_peer_domain wed1 wed2 www.westos.com
systemctl restart squid
systemctl stop firewalld
西安的客户端(72):
vim /etc/hosts
172.25.254.233 www.westos.com
测试:在客户端浏览器www.westos.com 可以看到133和200上的数据,按权重weight值进行访问,两次200的,一次133的
#######################The End###################################