Nginx的基本概念
分布式:不同的业务模块部署在不同的服务器上或者同一个业务模块分拆多个子业务,部署在不同的服务器上,解决高并发的问题。
牵扯到项目的拆分,将一个完整的项目拆分成多个模块,并且每个模块都能独立部署以及运行。
集群:同一个业务部署在多台机器上,提高系统可用性。
项目的部署,将一个完整的单独的项目部署在多台服务器上就叫做集群。
将分布式项目中每一个模块都部署在多台服务器上,就叫做分布式+集群
反向代理
假设三台服务器套接字分别为:
192.168.75.12:8080
192.168.75.13:8081
192.168.75.14:8082
这个时候接收到客户端请求,我们无法使用tomcat自动指定处理请求的服务器,这个时候我们就需要有一个服务器统一接收请求,然后将请求分配给上面的三台服务器。
nginx:是一优秀的web服务器,其反向代理功能十分强大,依靠其反向代理可以实现负载均衡。
正向代理:A 向 B 说你帮我从C那那点东西 用户知道自己使用的是代理,并且用户知道实际访问的网址。
反向代理:A 问 B 买东西,结果东西是B从C或D那里取的 用户并不知道自己使用的是代理,并且用户并不知道真实访问的网址。
正向代理:whz想访问www.xxx.com 但是这个网站在网内禁止访问,whz找了一个代理服务器,通过代理服务器来访问www.xxx.com。
反向代理:ff想访问www.xxx.com 但是ff找不到代理服务器,这个时候whz注册了一个www.ggg.com的域名,然后使用反向代理将所有www.ggg.com的请求都转发给www.xxx.com,然后将www.ggg.com推荐给ff
通过上面的案例我们发现反向代理可以将用户的请求转发到其他地方,并且用户不会发现,我们可以依靠反向代理以及nginx自身提供的机制实现负载均衡。
nginx在linux的安装
1、首先linux下需要有两个tomcat(用来做负载均衡时使用)
改名解压即可
tar -zxvf apache-tomcat-8.5.20.tar.gz
2、然后需要安装nginx使用的库
yum install gcc-c++ 用来编译C语言程序。
yum install pcre pcre-devel 使用PCRE做二次开发时所需要的开发库,包括头文件等
yum install zlib zlib-devel zlib库用于对HTTP包的内容做gzip格式的压缩,如果我们在nginx.conf里配置了gzip on,并指定对于某些类型(content-
type)的HTTP响应使用gzip来进行压缩以减少网络传输量,那么,在编译时就必须把zlib编译进Nginx
yum install openssl openssl--devel 服务器不只是要支持HTTP,还需要在更安全的SSL协议上传输 HTTP,那么就需要拥有OpenSSL了。另外,如果我们想使用
MD5、SHA1等散列函数,那么也需要安装它
3、安装之前,最好检查一下是否已经安装有nginx,如果有要先卸载
find -name nginx
yum remove nginx
4、然后把nginx安装包放在usr/local下,解压,进入nginx目录
tar -zxvf nginx-1.12.2.tar.gz
cd nginx-1.12.2
5、然后执行配置命令
./configure
会出现下面的图片
然后可以make安装
make
make install
然后就可以返回了
返回上一级 cd ..
进入nginx cd nginx
6、启动和停止nginx
返回上一级 cd ..
进入sbin目录 cd sbin/
以配置文件启动nginx ./nginx -c/usr/local/nginx/conf/nginx.conf
./nginx 启动命令
./nginx -s stop
./nginx -s quit
./nginx -s reload 重新加载
./nginx -s quit: 此方式停止步骤是待nginx进程处理任务完毕进行停止。
./nginx -s stop: 此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。
7、查看和杀死进程
查看线程 ps -ef|grep nginx
杀死线程 kill -9 88933(线程id)
8、修改tomcat中的配置文件
22行 <Server port="8007" shutdown="SHUTDOWN">
69行 <Connector port="8070" protocol="HTTP/1.1"
116行 <Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />
然后可以重启tomcat(两个一起启动)
进入tomcat目录下 cd /usr/local//tomcat-8.5.20/bin/
启动 ./startup.sh
然后可以在浏览器中访问 192.168.133.128:8070
9、修改nginx中的conf下的nginx.conf配置文件
首先加上
upstream test{
server 192.168.133.128:8070;
server 192.168.133.128:8080;
}
然后修改
location / {
proxy_pass http://test;
index index.html index.htm index.jsp;
}
9、可以修改其中一个tomcat的index.jsp页面,然后刷新运行,看是否有轮询(启动两个tomcat)
修改index.jsp页面是在tomcat下的wepapp下的root下的
访问192.168.133.128 ctrl刷新即可。
10、配置轮训的权重,在nginx中的配置文件中
upstream test{
server 192.168.133.128:8070 weight=9;
server 192.168.133.128:8080 weight=1;
}
重新启动nginx,刷新页面即可
学习总结
1:了解nginx基本概念,安装等
2:了解反向代理,并学会基本的配置反向代理
3:了解负载均衡,并学会基本的负载均衡配置
4:了解负载均衡的调度算法
nginx的调度算法有4种:
1、轮询(默认调度算法,默认是平均分配请求,我们可以通过weight=X 来指定被分配的几率,X越大代表几率越大)
2、ip_hash 按照ip的哈希值来分配请求,这样做的话同一个ip访问的永远是同一个服务器。
3、url_hash 按照url的请求来进行服务器的分配,例如请求www.baidu.com/a 的全分配到服务器A,www.baidu.com/b全分配到服务器B,
4、fair 根据服务器的响应结果来进行智能的负载均衡,服务器响应的速度越快,被分配的请求就越多,服务器响应的速度越快,被分配的请求就越少。
上面的四种调度算法中nginx默认支持轮询和ip_hash,如果想使用url_hash,需要安装nginx的hash软件包,而使用fair需要下载一个upstream_fair模块