NGINX+TOMCAT动静分离实验
一、动静分离原理
服务端接收来自客户端的请求中,有一部分是静态资源的请求,例如 html、css、js和图片资源等等。有一部分是动态数据的请求。因为 Tomcat 处理静态资源的速度比较慢,所以可以考虑把所有静态资源独立开来,交给处理静态资源更快的服务器(例如 Nginx)处理,而把动态请求交给 Tomcat 处理。 在机器上同时安装了 Nginx 和 Tomcat,把所有的静态资源都放置在 Nginx的 webroot 目录下面,把动态请求的程序都放在 Tomcat 的目录下面。当客户端访问服务端的时候,如果是静态资源的请求,就直接到 Nginx 的目录下面获取资源。如果是动态资源的请求,Nginx 利用反向代理的原理,把请求转发给 Tomcat 进行处理,这样就实现了动静分离,提高了服务器处理请求的性能。
二、WEB服务搭建
1)Nginx源码安装
yum install -y pcre*
//下载依赖包
yum -y install openssl*
useradd -s /sbin/nologin nginx
wget http://nginx.org/download/nginx-1.14.2.tar.gz
tar -zxvf nginx-1.14.2.tar.gz -C /opt
cd /opt/nginx-1.14.2
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module
make && make install
//安装完成
vi /etc/init.d/nginx
#!/bin/bash
# chkconfig: 35 99 20
# description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
chmod +x /etc/init.d/nginx
chkconfig --add nginx
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/
systemctl start nginx
netstat -tnlp | grep nginx
可以访问一下
2)Tomcat源码安装,由于Tomcat是基于java语言编写的,所以要搭建JDK环境
JDK官网下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
Tomcat官网下载地址:https://tomcat.apache.org/download-90.cgi
rz //传输 jdk-8u91-linux-x64.tar.gz
rz //传输 apache-tomcat-9.0.36.tar.gz
tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
vi /etc/profile //末行插入
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile //刷新文件
[root@localhost ~]# java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
//JDK环境搭建完成
tar zxvf apache-tomcat-9.0.36.tar.gz -C /usr/local/
mv /usr/local/apache-tomcat-9.0.36/ /usr/local/tomcat
cd /usr/local/tomcat
/usr/local/tomcat/bin/startup.sh
netstat -anpt | grep 8080 //过滤出Tomcat的默认端口,就搭建完成了
三、动静分离实现
vi /usr/local/nginx/conf/nginx.conf
location ~ .*.jsp$ {
proxy_pass http://192.168.80.38:8080;
Host $host;
}
//在server内嵌套将动态.jsp请求发送到Tomcat服务器上,实验就只用了一台虚拟机,不同端口也可以凑合用
vi /usr/local/nginx/html/index.html //在Nginx中编写静态网页,图片放在当前目录下就行了
<html>
<title>静态页面</title>
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head>
<body>
<h1>GOOD LUCK TO YOU</h1>
<h1>看我神威,无坚不摧!</h1>
<img src="1.jpg" width = "20%" heigth = "20%" alt="刘谋" />
</body>
</html>
~
vi /usr/local/tomcat/webapps/test/index.jsp //在Tomcat中编写动态网页,图片放在Nginx网页目录下创建一个和Tomcat网页项目相同名字的目录下
<!DOCTYPE html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.Date" %> <%@ page import="java.text.SimpleDateFormat" %> <!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"> <title>动态页面</title>
</head> <body> <div>动态页面</div>
<img src="2.jpg" width = "50%" heigth = "50%" alt="桐谷和人" />
</body> </html>
systemctl restart nginx //重启nginx使更改的配置文件生效
chmod 777 *.jpg //要给图片执行权限
在Windows的C:\Windows\System32\drivers\etc下
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
192.168.80.38 www.lxm.com
四、效果呈现
Nginx页面静态呈现
Tomcat动态页面呈现