项目实战02:nginx 反向代理负载均衡、动静分离和缓存的实现
目录

总项目流程图,详见http://www.cnblogs.com/along21/p/7435612.html
实验一:实现反向代理负载均衡且动静分离

1、环境准备:
|
机器名称 |
IP配置 |
服务角色 |
备注 |
|
nginx |
VIP:172.17.11.11 |
反向代理服务器 |
开启代理功能 设置监控,调度 |
|
rs01 |
RIP:172.17.22.22 |
后端服务器 |
stasic-srv 组 |
|
rs02 |
RIP:172.17.1.7 |
后端服务器 |
stasic-srv 组 |
|
rs01 |
RIP:172.17.77.77 |
后端服务器 |
defautl-srv 组 |
|
rs02 |
RIP:172.17.252.111 |
后端服务器 |
defautl-srv 组 |
2、下载编译安装tengine
原因:nginx自带的监控模式虽然能用,但是很不易理解;tengine的监控模式易设简单,且是在nginx的二次开发,和nginx差不多
(1)官网下载:http://tengine.taobao.org 还支持中文

解包 tar tengine-2.1.1.tar.gz
cd tengine-2.1.1
(2)下载所依赖的包
yum -y groupinstall "development tools"
yum install openssl-devel -y
yum install pcre-devel -y
(3)编译安装
./configure --prefix=/usr/local/tengine 指定安装后的目录
make && make install
3、设置代理服务器的配置文件
cd /usr/local/tengine/conf
cp nginx.conf /usr/local/tengine/conf/ 若机器上本有nginx,可以把配置文件直接拷过来,没有也可自己设置
vim nginx.conf 全局段和 http段我就不设置了,默认就好
① 定义upstream:后端server 群

upstream lnmp-srv1 {
server 172.17.22.22:80;
server 172.17.1.7:80;
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
check_http_send "HEAD / HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
}
upstream lnmp-srv2 {
server 172.17.77.77:80;
server 172.17.252.111:80;
server 172.17.1.7:80;
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
check_http_send "HEAD / HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
}

② 在server段的location 段中设置动静分离

server {
listen 80;
location /stats { #设置监听页面
check_status;
}
location ~* .jpg|.png|.gif|.jpeg$ {
proxy_pass http://static-srv;
}
location ~* .css|.js|.html|.xml$ {
proxy_pass http://static-srv;
}
location / {
proxy_pass http://default-srv;
}
}

4、启动tengine服务
① 去编译安装的路径开启服务
cd /usr/local/tengine/sbin/
./nginx 启动tengine
./nginx -s stop 停止
② 也可以添加到开机自启
cd /usr/lib/systemd/system/nginx.service 添加修改,Centos 7
cd cd /etc/init.d/ Centos 6
5、开启后端的web服务
systemctl start nginx
systemctl start php-fpm
systemctl start mariadb
6、测试
(1)测试反向代理是否成功 http://172.17.11.11/ web页面访问成功

(2)测试状态页面 http://172.17.11.11/stats

(3)测试动静分离
把静态页面的后端server组的服务宕机,发现没有静态的东西了

实验二:nginx实现缓存功能

需求分析:为什么需要缓存?
缓存的最根本的目的是为了提高网站性能, 减轻频繁访问数据 , 而给数据库带来的压力 。 合理的缓存 , 还会减轻程序运算时 , 对CPU 带来的压力。在计算机现代结构中, 操作内存中的数据比操作存放在硬盘上的数据是要快N 个数量级的 , 操作简单的文本结构的数据 , 比操作数据库中的数据快N 个数量级 。
例如: 每次用户访问网站, 都必须从数据库读取网站的标题, 每读一次需要15 毫秒的时间, 如果有100 个用户( 先不考虑同一时间访问), 每小时访问10 次, 那么就需要读取数据库1000 次, 需要时间15000 毫秒. 如果把页面直接变成页面缓存,则每次访问就不需要去数据库读取,大大提升了网站性能。
原理:
缓存数据分为两部分( 索引, 数据):
① 存储数据的索引 ,存放在内存中;
② 存储缓存数据,存放在磁盘空间中;
分析:如建立a.jpg的缓存,把它的uri作为索引放在内存中,实际图片数据放在磁盘空间中;缓存会有很多,所以索引存放的目录需分层级,把uri做hash运算,换算成16位进制,取最后一个数作为一级目录的名称[0-f];二级目录可以用随机最后第2,3位数作为名称[00-ff];三级目录以此类推...
1、环境准备:同上实验,实验结构图如下:

2、设置代理服务器的配置文件
① 先在http段定义缓存
proxy_cache_path /data/cache levels=1:2:2 keys_zone=proxycache:10m inactive=120s max_size=1g
分析:定义一个缓存,路径在/data/cache 下;三级目录,第一级[0-f]随机数字,第二、三级[00-ff]随机数字;定义缓存的名字proxycache,缓存大小10M;存活时间120s;在磁盘占用空间最大1G。
② 再在server段引用缓存

proxy_cache proxycache; #引用上面定义上的缓存空间,同一缓存空间可以在几个地方使
用
proxy_cache_key $request_uri; #对uri做hash运算
proxy_cache_valid 200 302 301 1h; #200、302、301响应码的响应内容的缓存1小时
proxy_cache_valid any 1m; #其它缓存1分
add_header Along-Cache "$upstream_cache_status form $server_addr"; #给请求响应增加一个头部信息,表示从服务器上返回的cache


3、测试:访问 http://172.17.11.11/
F12调试模式下,看到自己设置的特定头部存在

缓存目录也生成了缓存

项目实战02:nginx 反向代理负载均衡、动静分离和缓存的实现的更多相关文章
- 十.nginx反向代理负载均衡服务实践部署
期中集群架构-第十章-nginx反向代理负载均衡章节章节====================================================================== 0 ...
- Nginx 反向代理 负载均衡 虚拟主机配置
Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...
- Nginx 反向代理 负载均衡 虚拟主机
Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...
- 【转】Nginx 反向代理 负载均衡 虚拟主机配置
原文:http://www.cnblogs.com/itdragon/p/8059000.html Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代 ...
- Centos7.4 Nginx反向代理+负载均衡配置
Ningx是一款高性能的HTTP和反向代理服务器,配置起来也比较简单. 测试环境: 172.16.65.190 Nginx-反向代理 172.16.65.191 Ningx-Web 172.16.65 ...
- 项目实战2.2—nginx 反向代理负载均衡、动静分离和缓存的实现
实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备注 nginx VIP:172.17.11.11 反向代理服务器 开启代理功能 设置监控,调度 rs01 RIP ...
- 项目实战2.1—nginx 反向代理负载均衡、动静分离和缓存的实现
总项目流程图,详见 http://www.cnblogs.com/along21/p/8000812.html 实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备 ...
- 如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器
Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动 ...
- Centos 7.6配置nginx反向代理负载均衡集群
一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76 nginx负载均衡器 192.168.2.82 web ...
随机推荐
- YARN Resource Management
https://www.jianshu.com/p/b9245242472b https://stackoverflow.com/questions/42637631/what-does-virtua ...
- XSS跨站脚本小结(转)
原文链接:http://www.cnblogs.com/xiaozi/p/5588099.html#undefined XSS漏洞验证经常遇到一些过滤,如何进行有效验证和绕过过滤呢,这里小结一下常见的 ...
- Hibernate获取数据java.lang.StackOverflowError
原因:因为在重写toString()方法时,把关联的属性也放入到toString方法中了,去掉就可以了. 如:重写的toString方法中不能有关联关系IDCard属性idCard public cl ...
- 【经验总结】- IDEA无法显示Project目录怎么办
1. 关闭IDEA 2.然后删除项目文件夹下的.idea文件夹 3.重新用IDEA工具打开项目 4.再次点击如下图即可搞定
- 关于QQ邮箱有时候接受不到邮件的解决
1.很可能是被当作垃圾邮件拦截了,这时候就要自己找回 2.首先点击邮箱首页 3.在最后一行倒数第三个选择自助查询 4.一般在收信查询或者删信查询里面,找到被删的邮件,添加到白名单就好了
- CUDA加opencv复现导向滤波算法
CUDA是GPU通用计算的一种,其中现在大热的深度学习底层GPU计算差不多都选择的CUDA,在这我们先简单了解下其中的一些概念,为了好理解,我们先用DX11里的Compute shader来和CUDA ...
- Android Bluetooth hci 命令分析
Android在连接BLE设备的时候,遇到连接没多久就自动断开的情况.通过HCI来分析一下. BLE设备发送连接参数更新请求 3909 15:53:01.224737 TexasIns_f0:d3:4 ...
- maven jdk 版本配置
一种是配置 pom.xml,一种是配置 settings.xml. 方式一:settings.xml 配置 打开 %maven%/conf/settings.xml 文件并编辑它(%maven% 表示 ...
- vue+node+mongodb前后端分离博客系统
感悟 历时两个多月,终于利用工作之余完成了这个项目的1.0版本,为什么要写这个项目?其实基于vuejs+nodejs构建的开源博客系统有很多,但是大多数不支持服务端渲染,也不支持动态标题,只是做到了前 ...
- 从头配置,开发 cocos2dx 3.14.1
要使用cocos2dx写一个麻将测试工具. 配置流程如下: 1. 下载安装最新版本的VS(VS2017): https://www.visualstudio.com/zh-hans/downloads ...