jsp网站购买空间/站长工具服务器查询
文章目录
- 1. CDN内容分发网络
- 2. 安装
- 3. 添加默认后端服务器
- 4.击中缓存
- 5. 添加后端
- 5.1 server13配置nginx
- 5.2 在server14配置文件中添加后端
- 5.3 server12 nginx添加虚拟主机
- 5.4 server13 nginx添加虚拟主机
- 5.5 server14 分发后端主机
- 5.6访问测试
- 6. 负载均衡
- 7. 健康检查
- 8. 原站获取客户端原始ip
- 8.1 nginx代理配置
- 8.2 nginx服务器配置
- 8.3 客户端访问
1. CDN内容分发网络
两大功能:
1、缓解后端原始服务器的压力
2、提速
整体框图:
2. 安装
Varnish是一款高性能的开源HTTP加速器
[root@server14 ~]# systemctl stop mariadb
[root@server14 ~]# yum install -y varnish-* jemalloc-*
[root@server14 ~]# cd /etc/varnish/
[root@server14 varnish]# ls
default.vcl secret varnish.params
3. 添加默认后端服务器
[root@server14 varnish]# vim default.vcl
[root@server14 varnish]# vim varnish.params
[root@server14 varnish]# systemctl start varnish
[root@server14 varnish]# netstat -antlp[root@foundation ~]# curl 192.168.0.14
[root@foundation ~]# curl 192.168.0.14 -I
vim default.vcl
指定server12为后端服务器,server12上有配置nginx
vim varnish.params
4.击中缓存
[root@server14 varnish]# vim default.vcl if (obj.hits > 0) {set resp.http.X-Cache = "HIT from westos cache";}else {set resp.http.X-Cache = "MISS from westos cache";}return (deliver);
[root@server14 varnish]# systemctl reload varnish
[root@foundation ~]# curl 192.168.0.14 -I
首次访问显示未击中缓存,再次访问显示击中缓存
5. 添加后端
[root@server12 local]# rsync -a nginx server13:/usr/local/
[root@server13 ~]# vim .bash_profile
[root@server13 ~]# source .bash_profile
[root@server13 ~]# nginx
[root@server14 varnish]# vim default.vcl
5.1 server13配置nginx
vim .bash_profile
5.2 在server14配置文件中添加后端
vim default.vcl ##server14在配置文件中添加后端,并重启服务使之生效
5.3 server12 nginx添加虚拟主机
[root@server12 ~]# cd /usr/local/nginx/conf/
[root@server12 conf]# vim nginx.conf
server {listen 80;server_name www.westos.org;location / {root /www;index index.html;}
}
[root@server12 conf]# mkdir /www
[root@server12 conf]# echo www.westos.org > /www/index.html
[root@server12 conf]# nginx -s reload
5.4 server13 nginx添加虚拟主机
[root@server13 ~]# cd /usr/local/nginx/conf/
[root@server13 conf]# vim nginx.conf
server {listen 80;server_name bbs.westos.org;location / {root /bbs;index index.html;}
}
[root@server13 conf]# mkdir /bbs
[root@server13 conf]# echo bbs.westos.org > /bbs/index.html
[root@server13 conf]# nginx -s reload
5.5 server14 分发后端主机
[root@server14 varnish]# \vi default.vcl
if (req.http.host ~ "^(www.)?westos.org") {set req.http.host = "www.westos.org"; ##如果访问的域名是www.westos.org则分发到server12上set req.backend_hint = default;#return(pass);}elseif (req.http.host ~ "^bbs.westos.org") { ##如果访问的域名是bbs.westos.org则分发到server13上set req.backend_hint = web2; #return(pass);}else {return(synth(404,"Not in cache")); ##访问其它域名则报404错误}
[root@server14 varnish]# systemctl reload varnish.service
5.6访问测试
访问其他域名报错
[root@foundation ~]# vim /etc/hosts ##添加解析
[root@foundation ~]# ping www.westos.org
[root@foundation ~]# ping bbs.westos.org
[root@foundation ~]# curl www.westos.org
www.westos.org
[root@foundation ~]# curl bbs.westos.org
bbs.westos.org
[root@foundation ~]# curl bbs.westos.org -I
6. 负载均衡
为server13的nginx再添加一个主机
[root@server13 conf]# vim nginx.conf
[root@server13 conf]# mkdir /www
[root@server13 conf]# echo www.westos.org - server3 > /www/index.html
[root@server13 conf]# nginx -s reload
server12和server13都有www.westos.org这个域名对应的虚拟主机,在server14 varnish配置文件中设置负载均衡
[root@server14 varnish]# vim default.vcl
import directors;
sub vcl_init {new web_cluster = directors.round_robin();web_cluster.add_backend(default);web_cluster.add_backend(web2);
}sub vcl_recv {if (req.http.host ~ "^(www.)?westos.org") {set req.http.host = "www.westos.org";set req.backend_hint = web_cluster.backend();return(pass); ##不从缓存中找,直接去后端查询,刚开始访问有缓存,无法负载均衡,设置完这个参数之后就可以负载均衡}
[root@server14 varnish]# systemctl reload varnish.service
[root@foundation ~]# curl www.westos.org
www.westos.org
[root@foundation ~]# curl www.westos.org
www.westos.org - server3
[root@foundation ~]# curl www.westos.org -I
负载均衡
设置从后端直接查询,没有缓存。
7. 健康检查
当后端出现问题时,为了不让用户访问报错,我们需要做后端的健康检查
没有健康监测时,server12 nginx停掉,访问后端出错
[root@server12 conf]# nginx -s stop
[root@foundation ~]# curl www.westos.org
设置健康检查
[root@server14 varnish]# vim default.vcl
probe backend_healthcheck {.url = "/index.html";.window = 3;.threshold = 2;.interval = 3s; ##每隔三秒执行一次健康检测
}backend default {.host = "192.168.0.12";.port = "80";.probe = backend_healthcheck;
}backend web2 {.host = "192.168.0.13";.port = "80";.probe = backend_healthcheck;
}[root@server14 varnish]# systemctl reload varnish.service
[root@foundation ~]# curl www.westos.org
自动跳过出现问题的后端
[root@server12 conf]# nginx
server12 nginx开启,重新负载均衡。
8. 原站获取客户端原始ip
在生产环境中有时候会有这样的需求:原站可能需要根据访问量等信息做业务分析,这时候就需要获取到客户端原始的ip,但是正常情况下客户访问到原站会经过两次反向代理 ->cdn 和proxy,这时候如果不做某些设置,则原站获取到的都是cdn的ip,无法满足业务需求,因此我们就需要来解决这个问题。
8.1 nginx代理配置
[root@server12 conf]# vim nginx.confupstream westos {server 192.168.0.13:80;}server {listen 80;server_name www.westos.org;location / {#root /www;#index index.html;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://westos;}
}
[root@server12 conf]# nginx -s reload
nginx.conf
[root@server14 varnish]# vim default.vcl
[root@server14 varnish]# systemctl reload varnish.service
[root@foundation ~]# curl www.westos.org[root@server13 html]# pwd
/usr/local/nginx/html
[root@server13 html]# vim index.html
www.westos.org - server3
[root@foundation ~]# curl www.westos.org ##访问的是原站
www.westos.org - server3
8.2 nginx服务器配置
之前server3上部署的nginx服务器在编译时没有添加相关功能,因此我们需要重新编译:
[root@server13 conf]# nginx -s stop
[root@server13 conf]# cd
[root@server13 ~]# ls
[root@server13 ~]# tar zxf nginx-1.18.0.tar.gz
[root@server13 ~]# yum install -y gcc prce-devel openssl-devel
[root@server13 nginx-1.18.0]# vim auto/cc/gcc [root@server13 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module[root@server13 nginx-1.18.0]# make
[root@server13 nginx-1.18.0]# cd objs/
[root@server13 objs]# cp nginx /usr/local/nginx/sbin/
cp: overwrite ‘/usr/local/nginx/sbin/nginx’? y
[root@server13 objs]# cd /usr/local/nginx/
[root@server13 nginx]# cd conf/
[root@server13 conf]# vim nginx.confreal_ip_header X-Forwarded-For; ##添加报头,能够将真实ip传递给原站real_ip_recursive on;set_real_ip_from 192.168.0.0/24;[root@server13 conf]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@server13 conf]# nginx[root@server13 conf]# cd ..
[root@server13 nginx]# tail -f logs/access.log
auto/cc/gcc
nginx.conf
8.3 客户端访问
客户端访问时获取到了真实ip