Nginx是一款非常优秀的HTTP服务器软件
支持高达50000个并发连接数的响应
拥有强大的静态资源处理能力
运行稳定
内存、CPU等系统资源消耗非常低
目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点的负载并发能力
Nginx实现负载均衡是通过反向代理实现的
upstream 服务池名 { }
配置后端服务器池,以提供响应数据
proxy_pass http://服务池名
配置将访问请求转发给后端服务器池的服务器处理
动静分离原理
服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由nginx提供服务,动态资源nginx转发至后端
案例架构:
本架构同时实现了nginx的负载均衡和动态分离,静态页面由nginx处理,动态页面由nginx进行调度,分配给后端的两台Tomcat网站服务器,权重值为1:1
主机 | IP地址 | 主要软件 |
---|---|---|
Nginx负载均衡器 | 192.168.10.10 | nginx |
Tomcat网站服务node1 | 192.168.10.20 | jdk、apache-tomcat |
Tomcat网站服务node2 | 192.168.10.30 | jdk、apache-tomcat |
客户端 | 192.168.10.80 | 浏览器 |
1.安装jdk环境
[root@localhost ~]# cd /opt
[root@localhost opt]# tar zxvf jdk-8u91-linux-x64.tar.gz
[root@server1 opt]# mv jdk1.8.0_91/ /usr/local/java
[root@localhost opt]# vi /etc/profile
最后加入如下内容
export JAVA_HOME=/usr/local/java/
export JAVA_JRE=/usr/local/java/jre
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/lib:$JAVA_JRE/bin:$JAVA_JRE/lib
[root@localhost opt]# source /etc/profile
[root@localhost opt]# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
2.安装Tomcat软件,创建软连接
[root@localhost opt]# tar zxvf apache-tomcat-8.5.16.tar.gz
[root@localhost opt]# mv apache-tomcat-8.5.16/ /usr/local/tomcat8
[root@localhost opt]# /usr/local/tomcat8/bin/startup.sh
[root@localhost ~]# netstat -anpt | grep 8080
[root@localhost ~]# ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup
[root@localhost ~]# ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown
3.为两台节点创建web目录,并编辑不同网页内容加以区别
[root@localhost local]# mkdir -pv /web/webapp1
mkdir: 已创建目录 "/web"
mkdir: 已创建目录 "/web/webapp1"
[root@localhost local]# vim /web/webapp1/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test page</title>
</head>
<body>
<% out.println("welcom to web1");%>
<div>动态页面</div><br/><img src="aa.jpg"> ##aa.jpg与index.jsp在同一目录下
</body>
</html>
4.在tomact的主配置文件中添加指定web应用的文档基准目录区段
[root@localhost local]# vim /usr/local/tomcat8/conf/server.xml
#在第148行字段下面添加字段参数
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context docBase="/web/webapp1" path="" reloadable="false">
</Context>
注:docBase:web应用的文档基准目录
reloadable:设置监视“类”是否变化
path="":设置默认“类”
5.启动Tomcat
[root@localhost ~]# tomcatup 服务启动
[root@localhost ~]# netstat -anpt | grep 8080 查看端口信息
6.在浏览器访问http://192.168.10.20:8080/
Tomcat网站服务node2
1.安装依赖包
[root@nginx1 ~]# yum -y install gcc gcc-c++ make pcre-devel zlib-devel
2.为web服务器创建用户nginx,便于管理,再进行编译安装
[root@nginx1 ~]# useradd -M -s /sbin/nologin nginx
[root@nginx1 ~]# tar zxvf nginx-1.12.2.tar.gz
[root@nginx1 ~]# cd nginx-1.12.2/
[root@nginx1 nginx-1.12.0]# ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx
[root@nginx1 nginx-1.12.0]# make && make install
3.在nginx服务器中配置负载均衡和动静分离相关参数,对java文件请求转发到Tomcat处理
在nginx服务器中的主配置文件中修改如下内容
[root@localhost test]# vim /usr/local/nginx/conf/nginx.conf
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream tomcat_server { #配置后端服务器池,以提供响应数据,权重为1:1
server 192.168.10.20:8080 weight=1;
server 192.168.10.30:8080 weight=1;
}
server {
listen 80;
...省略内容
location ~ \.jsp$ {
proxy_pass http://tomcat_server; ##将java文件请求转发到Tomcat服务器池处理
}
}
4.启动服务
[root@nginx1 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@nginx1 ~]# systemctl stop firewalld.service
[root@nginx1 ~]# setenforce 0
[root@nginx1 ~]# nginx -t 检查语法
[root@nginx1 ~]# nginx 服务启动
[root@nginx1 ~]# netstat -anpt | grep 80 查看端口状态
5.在nginx调度器的/usr/local/nginx/html/目录下添加图片aa.jpg和bb.jpg,不然会访问不到图片
6.结果验证
浏览器中访问静态页面
http://192.168.10.10/
浏览器中访问动态页面(通过刷新页面会轮询(rr)显示不同内容)
http://192.168.10.10/index.jsp