说到 Nginx ,相信大家都不会陌生,最常用的莫过于:用它来与 Tomcat 搭配做负载均衡,起到灰度发布的作用,同时保证系统高可用!
01、简介
Nginx(发音同 engine x)是异步框架的网页服务器,也可以用作反向代理、负载平衡器和 HTTP 缓存。该软件由伊戈尔·赛索耶夫创建并于2004年首次公开发布。 2011年成立同名公司以提供支持。2019年3月11日,Nginx 公司被 F5 Networks 以6.7亿美元收购。
传统模型下,一个项目部署在一台tomcat上,这个时候,假如tomcat因为服务器资源不够,突然挂机了,那么整个项目就无法使用,给客户造成的损失可想而知!

Nginx 就可以避免单台服务如果挂机,依然能保证服务正常使用,当我们把项目 war 包部署到三台服务器上时,即使服务器A、服务器B都挂了,依然能够通过服务器C访问项目资源!

好了,啥也不说了,直接开始干!
02、Nginx 安装
2.1、下载 Nginx 安装包
直接访问 Nginx 官网(https://nginx.org),下载对应的安装包,本次案例选择的是nginx-1.6.3.tar.gz版本,安装环境是centos7。

上传到对应服务器的文件夹或者直接在服务器端使用wget命令
1 | |
如果出现如下信息:
1 | |
提示wget命令找不到,使用如下命令,进行安装,之后再次执行上述下载命令
1 | |
2.2、安装 Nginx
在按照 Nginx 之前,需要安装相应运行库环境,操作如下
1)安装 gcc 环境
1 | |
2) 安装 PCRE 依赖库
1 | |
3)安装 zlib 依赖库
1 | |
4) 安装 OpenSSL 安全套接字层密码库
1 | |
5)解压 Nginx
安装完以上环境库之后,接着进行解压操作
1 | |
6)执行配置命令
cd进入文件夹
1 | |
执行配置命令
1 | |
如下图,表示执行配置成功!

当然,也可以执行自定义配置文件,例如:
1 | |
注意:临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录
7)执行编译安装命令
1 | |
8)查找安装路径
1 | |
结果如下:

9)启动服务
进入 nginx 的目录
1 | |

执行如下命令
1 | |
10)修改配置文件
比如,修改端口号,默认端口号为80,咱们这里改成81;
进入配置文件夹
1 |
|
备份原始配置文件
1 | |
编辑nginx.conf配置文件
1 |
|

找到server中的listen,修改端口号为81

启动服务
1 | |
查看 nginx 进程
1 | |

到此,nginx 安装基本完成,直接在浏览器上访问服务器地址ip:81,就可以进入页面

03、Tomcat安装
直接访问 tomcat 官网(http://tomcat.apache.org/),下载对应的安装包,本次案例选择的是apache-tomcat-8.5.45.tar.gz版本,本次安装环境是centos7。

上传到对应的服务器文件夹中,之后解压文件夹
1 | |
重新命名
1 | |
同样的,再次解压安装包,命名为tomcat-2
1 | |
1)修改 tomcat 端口号
将 tomcat-1 的 http 端口设置为8080,将 tomcat-2 的 http 端口设置为8081。
进入tomcat的conf文件夹,修改server.xml
1 | |
修改SHUTDOWN、HTTP/1.1、redirectPort、AJP/1.3端口,使其错开,避免重启的时候,报端口被占用问题
tomcat-1 的SHUTDOWN、HTTP/1.1、redirectPort、AJP/1.3设置如下:
1 | |
tomcat-2 的SHUTDOWN、HTTP/1.1、redirectPort、AJP/1.3设置如下:
1 | |
2)启动服务
分别进入 tomcat-1 、 tomcat-2 的bin文件夹,执行脚本,启动服务
1 | |
查看服务是否启动成功
1 | |

说明已经启动成功了,可以直接在浏览器上分别输入ip:8080、ip:8081进行访问了,结果如下:

3)编写Html
为了便于测试,我们创建一个html格式的页面,文件命名为index.html,内容如下:
1 | |
进入tomcat的webapps文件夹,删除ROOT文件夹里面的东西,创建index.html文件;
在 tomcat-1 中,index.html 内容如下:

在 tomcat-2 中,index.html 内容如下:

4)测试
创建好了之后,分别在浏览器上访问ip:8080、ip:8081;
ip:8080,结果如下:

ip:8081,结果如下:

04、Nginx实现负载均衡
进入 Nginx 的配置文件夹
1 |
|
编辑nginx.conf配置文件
1 |
|
主要新增upstream集群配置点,配置如下:
1 | |
参数说明:
- worker_processes:工作进程的个数,一般与计算机的cpu核数一致
- worker_connections:单个进程最大连接数(最大连接数=连接数*进程数)
- include:文件扩展名与文件类型映射表
- default_type:默认文件类型
- sendfile :开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
- keepalive_timeout:长连接超时时间,单位是秒
- upstream:服务器的集群配置点
配置好之后,进入/usr/local/nginx/sbin/ 文件夹,重新刷新配置文件
1 | |
最后,访问Nginx服务器所在ip:81地址,多次刷新,看看效果:

至此,Nginx 与 Tomcat 搭配实现负载均衡已经配置完了,是不是很酷!
赶紧去试试吧!