Nginx是一个非常优秀的服务器,它的魅力不仅是负载均衡,动静分离等等.
Nginx使用
- Nginx 简介
- Nginx 安装与配置
- 部署 Nginx+Tomcat集群负载均衡
- Nginx+Tomcat 动静分离
- Nginx 负载均衡策略
Nginx 简介
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务
正向代理:客户端是清楚目标服务器的地址的,而目标服务器是不清楚来自客户端,它只知道来自哪个代理服务器,所以正向代理可以屏蔽或隐藏客户端的信息.
反向代理:客户端发来请求,先由反向代理服务器,然后按一定的规则分发到明确的服务器,而客户端不知道是哪台服务器。常常用nginx来作反向代理
Nginx安装和配置
1.安装需要的依赖
yum install gcc-c++
yum -y install pcre*
yum -y install openssl*
2.下载nginx与解压到指定目录
wget http://nginx.org/download/nginx-1.9.9.tar.gz
tar -zxvf nginx-1.9.9.tar.gz -C /root/nginx
3.进入nginx目录设置安装目录
./configure --prefix=/root/nginx
- 执行
make
- 执行
make install
4.启动nginx服务(在安装目录下的Sbin目录下)
执行
./nginx
执行
ps -ef | grep nginx
查看工作进程常见的命令
./nginx -s stop/reload/quit
注意:如果访问报403错误.更改nginx.conf文件设置用户保持与当前一致
最终结果:
部署 Nginx+Tomcat集群与负载均衡
1.安装2个tomcat并修改端口号 (10088和10089)
2.在2个tomcat的root文件下放入index.jsp
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" |
3.配置下nginx
1 | upstream wwj { |
4.依次启动tomcat以及nginx进行操作
Nginx+Tomcat 动静分离
将一些常用的静态资源存放到nginx服务中,减轻tomcat本身的压力
1.先将一张图片1.jpg传入到ngnix的static目录下(/root/nginx/static)
scp /Users/Yun/Desktop/1.jpg root@144.202.3.120:/root/nginx/static
- 配置nginx配置文件拦截静态资源
1 | location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)$ { |
在tomcat的jsp中加入
<img src="1.jpg" alt="wwj"/>
结果如下:
Nginx 负载均衡策略
1.weight轮询(默认):接收到的请求按照顺序逐一分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,Nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。 这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。
2.ip_hash:每个请求按照发起客户端的ip的hash结果进行匹配,这样的算法下一个固定ip地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。
3.least_conn: 把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效。
4.fair:智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了前两者的优点的一种调度算法。但是需要注意的是Nginx默认不支持fair算法,如果要使用这种调度算法,请安装upstream_fair模块。
5.url_hash:按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在nginx作为静态服务器的情况下提高缓存效率。同样要注意Nginx默认不支持这种调度算法,要使用的话需要安装nginx的hash软件包。
配置在上游服务器设置中