CDN的基本概念和基础原理
***CDN全程时Content Delivery Network。通过在现有的internet中增加一层架构,将网站的内容发布到最接近用户的网络边缘,使用户可以就近取得所需要的内容,提高用户访问网站的响应速度,从技术上解决由于网络带宽小、用户访问量大、网店分布不均等问题,提高用户访问网站的响应速度。
**** 当用户访问已经加入CDN服务的网站时,首先通过DNS重定向技术确定最接近用户的最佳CDN节点,同时将用户的请求指向该节点。当用户的请求到达指定节点时,CDN的服务器(节点上的高速缓存)负责将用户请求的内容提供给用户。
****具体流程为: 用户在自己的浏览器中输入要访问的网站的域名,浏览器向本地DNS请求对该域名的解析,本地DNS将请求发到网站的主DNS,主DNS根据一系列的策略确定当时最适当的CDN节点,并将解析的结果(IP地址)发给用户,用户向给定的CDN节点请求相应网站的内容
正向代理
正向代理类似一个跳板机,代理访问外部资源。比如我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。
那么正向代理是如何实现的呢?在这里我们用VPN翻墙来说明,较为直观。
代理主机IP:172.25.254.251 apache服务正常(相当于VPN)
互联网主机IP:172.25.254.65;确保该主机网络通畅(存在所需资源的主机)
www.baidu.com相当于客户端要无法直接访问的外网网站
客户端主机IP:172.25.254.151客户端,无法上网
配置步骤:
1.
yum install squid -y ##下载代理软件
rpm -qc squid ##查看该服务的配置文件


2.
vim /etc/squid/squid.conf
第56行 http_access allow all ##允许所有的http服务到达
第62行 cache_dir ufs /var/spool/squid 100 16 256 ##缓存目录大小为100M,存在16个目录,每个目录下由256个子目录

3.
还没重启服务之前, /var/spool/squid/没有文件,说明更改还未生效
systemctl restart squid ##重启代理服务
再次查看 /var/spool/squid 有目录生成,则重启成功

4.关闭火墙或者让火墙允许3128端口:因为squid的端口是3128而火墙目前的状态不允许3128端口。
测试(客户端)
在客户端的shell中直接ping www.baidu.com 显示域名无法解析,无法上网
在客户端的浏览器中进行以下操作


然后访问www.baidu.com
反向代理
反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
————————————————————
反向代理的作用:
(1)保证内网的安全,可以使用反向代理提供WAF功能,阻止web攻击。大型网站,通常将反向代理作为公网访问地址,Web服务器是内网。
(2)负载均衡,通过反向代理服务器来优化网站的负载
代理主机IP:172.25.254.251 确保其没有apache服务
父机(1)IP:172.25.254.65;确保该主机具备apache服务(存在所需资源的主机)
父机(2)IP:172.25.254.106;确保该主机具备apache服务(存在所需资源的主机)
客户端主机IP:172.25.254.151客户端,无法上网
配置步骤
1.如果重置了代理主机,需要重新下载代理软件
vim /etc/squid/squid.conf
第56行 http_access allow all
第59行 http_port 80 vhost vport
systemctl restart squid

netstat -antlupe | grep squid ##查看80端口是否开启
2.火墙允许http和https
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
firewall-cmd --list-all

在客户端浏览器中输入172.25.254.251(代理机IP),报错
原因是因为此时虽然客户端向代理主机寻求资源,但是代理主机并没有用户所需要的资源,所以报错,这时需要代理主机寻找web服务器也就是父机寻求资源,再反馈给用户。
解决办法:让代理主机访问父机
vim /etc/squid/squid.conf
继续添加:
cache_peer 172.25.254.65 parent 80 0 proxy-only ##类型为父机,端口为80,不做其他服务 只做代理proxy-only
systemctl restart squid

在客户端浏览器中输入172.25.254.104(代理机IP),重新测试
轮询调度(负载均衡)
负载均衡:通过反向代理来优化网站的负载。实用squid+web服务器来减少访问压力
在反向代理机上
vim /etc/squid/squid.conf ##加入两台web服务器
cache_peer 172.25.254.65 parent 80 0 proxy-only round-robin originserver name=web1 ##必须加上web名称,来标识这是个web服务器
cache_peer 172.25.254.106 parent 80 0 proxy-only round-robin originserver name=web2 ##proxy-only:只做代理
cache_peer_domain www.westos.com web1 web2 ##www.westos.com域名(必须写域名)

在客户端上
vim /etc/hosts ##解析域名
在浏览器上输入www.westos.com查看是否完成 ##父机要存在默认发布文件


论坛的搭建与部署
1.拿到一个已经写好的论坛脚本
2.在/var/www/html/下进行解压,出现readme等目录

3.
systemctl stop squid
systemctl mask squid ##把代理服务关闭
yum install httpd -y
cd /var/www/html/uoload/
chmod o+w ./config/ -R ##可以vim /var/www/html/readme/readme.text ##查看帮助文档
chmod o+w ./data/ -R

yum install php
systemctl restart httpd

yum install mariadb-server -y
vim /etc/my.cnf
在文件中写入skip-networking=1 关闭对外开启端口,保护数据库的安全

cd /etc/httpd/conf.d/
vim vhost.conf
<VirtualHost _default_:80>
DocumentRoot /var/www/html
CustomLog logs/default.log
</VirtualHost>
systemctl restart httpd

vim /etc/hosts
172.25.254.104 www.westosbbs.com ##加入本地域名解析

测试
在浏览器中输入www.westosbbs.com
缺少什么补什么
./uc_server和./uc_client缺少写权限
chmod o+w ./uc_client/ -R
chmod o+w ./uc_server/ -R ##赋予写权限
缺少php支持的mysql
yum install php-mysql

测试=
在客户端浏览器中输入域名www.westosbbs.com,进入论坛,添加用户信息。
在shell命令行中查看数据库,看是否能查询到用户信息。