本章目标
nginx反向代理均衡
分布式会话管理
使用redis实现分布式会话存储
1.单机容量问题,水平扩展方案引入
引入nginx反向代理负载均衡
上一章我们看到当单机系统时候,容量有限,响应时间变长TPS上不去的问题。nginx反向代理的功能就是代理后端Tomcat服务器集群,以统一域名方式来访问
单机容量问题,水平扩展
nginx反向代理
负载均衡配置
2.数据库远程开放端口连接
这次的水平扩展指的是对应用系统程序扩展,而mysql数据库只有一个,用来开放远端连接(mysql读写分离、分库分表等方法可实现mysql水平扩展,这里没讨论),服务端实现水平对称部署,最后验证访问
Nginx系统框图如下:
前端页面会访问miaoshaserver.com,之后nginx将这个域名反向解析并且负载均衡给部署了miaosha.jar的服务器上。
3.修改前端资源用于部署nginx
nginx有三种用途:
使用nginx作为web服务器(静态资源访问)
使用nginx作为动静分离服务器
使用nginx作为反向代理服务器(动态资源请求)
将上面的nginx的系统进行改良,
(1)前端页面请求静态资源的时候访问的是miaoshaserver/resources动态资源走的是原来的miaoshaserver。
(2)静态资源是nginx从本地磁盘(企业中是使用NAS)直接存取,动态资源是通过后端访问mql
那先部署静态资源请求:
在html文件静态资源目录下新建gethost.js,用来方便配置修改远端连接地址,然后在每个页面上对应修改,然后将静态资源上传到服务器上
4.部署Nginx OpenResty
使用Nginx的框架OpenResty来开发配置Nginx,OpenResty是基于NGINX和LuaJIT的动态Web平台。优点是可以支持lua的一些开发。
安装OpenResty
安装openresty之前的应用要安装好,如下:
yum install pcre-devel openssl-devel gcc curl
安装前置应用以后,下载OpenResty,解压压缩包,进入解压后的文件夹,然后执行configure文件
./configure
然后make进行编译
make
这里会报一个错误
src/os/unix/ngx_user.c: 在函数‘ngx_libc_crypt’中:
src/os/unix/ngx_user.c:26:7: 错误:‘struct crypt_data’没有名为‘current_salt’的成员
cd.current_salt[0] = ~salt[0];
这个时候进入源代码注释掉这一行就可以了
./bundle/nginx-1.13.6/src/os/unix/ngx_user.c
之后用make install进行安装
make install
应用就会安装在/usr/local/openresty 文件下面
将nginx指定成web服务器
location节点path :指定url映射key
location节点内容:root指定location path后对应的根路径,index指定默认的访问页
sbin/nginx -c conf/nginx.conf启动
修改配置后直接sbin/nginx -s reload无缝重启
若何指定nginx为web服务器:进入/usr/local/openresty/nginx 后执行下面的命令
sbin/nginx -c conf/nginx.conf
5.前端资源部署
1.之前的秒杀项目的html文件夹中的文件上传到//usr/local/openresty/nginx/html目录下,增加一个gethost.js,里面加入了nginx服务器域名,之后的域名转换都是在本地(用户)服务器上指定
2.修改本地hosts文件指定nginx的IP地址域名为miaoshaserver
3.修改nginx目录下conf文件,进入/usr/local/openresty/nginx/conf文件下,修改nginx.conf
上图的红框中的内容是:alias的作用是当访问resources的时候,直接访问/usr/local/openresty/nginx/html/resources/地址
当我们浏览器访问miaoshaserver/resources/…时,访问的是/usr/local/openresty/nginx/html/resources/目录下的静态资源文件,做到H5请求静态资源到nginx服务器
4.将当前目录切换到/usr/local/openresty/nginx/下,使用下面的命令无缝重启
sbin/nginx -s reload
无缝重启指的是修改nginx配置文件后不需要重启nginx服务器,连接不会断,只变化了进程号(worker进程)
如图所示,nginx服务器的修改不会影响到前端用户的使用
7.配置nginx反向代理
location 节点path特定resources : 静态