Nginx使用

Nginx是一个非常优秀的服务器,它的魅力不仅是负载均衡,动静分离等等.

Nginx使用

  1. Nginx 简介
  2. Nginx 安装与配置
  3. 部署 Nginx+Tomcat集群负载均衡
  4. Nginx+Tomcat 动静分离
  5. Nginx 负载均衡策略

Nginx 简介

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务

正向代理:客户端是清楚目标服务器的地址的,而目标服务器是不清楚来自客户端,它只知道来自哪个代理服务器,所以正向代理可以屏蔽或隐藏客户端的信息.

反向代理:客户端发来请求,先由反向代理服务器,然后按一定的规则分发到明确的服务器,而客户端不知道是哪台服务器。常常用nginx来作反向代理

Nginx安装和配置

1.安装需要的依赖

  1. yum install gcc-c++
  2. yum -y install pcre*
  3. yum -y install openssl*

2.下载nginx与解压到指定目录

wget http://nginx.org/download/nginx-1.9.9.tar.gz

IMAGE

tar -zxvf nginx-1.9.9.tar.gz -C /root/nginx

3.进入nginx目录设置安装目录

  1. ./configure --prefix=/root/nginx
  2. 执行make
  3. 执行make install

4.启动nginx服务(在安装目录下的Sbin目录下)

  1. 执行./nginx

  2. 执行 ps -ef | grep nginx 查看工作进程

  3. 常见的命令./nginx -s stop/reload/quit

注意:如果访问报403错误.更改nginx.conf文件设置用户保持与当前一致

IMAGE

最终结果:

IMAGE

部署 Nginx+Tomcat集群与负载均衡

1.安装2个tomcat并修改端口号 (10088和10089)

2.在2个tomcat的root文件下放入index.jsp

1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page isELIgnored ="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>Tomcat 10089</h1>
</body>
</html>

3.配置下nginx

1
2
3
4
5
6
7
8
9
10
11
upstream wwj {    
server 144.202.3.120:10088 weight=1;
server 144.202.3.120:10089 weight=2;
}

location / {
# root html;
# index index.html index.htm;
proxy_pass http://wwj;
proxy_redirect default;
}

4.依次启动tomcat以及nginx进行操作

Nginx+Tomcat 动静分离

将一些常用的静态资源存放到nginx服务中,减轻tomcat本身的压力

1.先将一张图片1.jpg传入到ngnix的static目录下(/root/nginx/static)

  1. scp /Users/Yun/Desktop/1.jpg root@144.202.3.120:/root/nginx/static

IMAGE

  1. 配置nginx配置文件拦截静态资源
1
2
3
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)$ {
root /root/nginx/static;
}
  1. 在tomcat的jsp中加入<img src="1.jpg" alt="wwj"/>

  2. 结果如下:

IMAGE

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软件包。

配置在上游服务器设置中