Tomcat与Nginx动静分离
一、实验环境
1.一台nginx服务器:192.168.80.133
2.一台Tomcat服务器:192.168.80.134
3.一台客户机
二、nginx服务搭建
nginx作为web服务可以承受大量的并发量,但是只能处理静态资源如:图片文字等。所以可以将jsp的动态请求发送给Tomcat服务进行处理。
1.创建nginx服务脚本:
#!/bin/bash
systemctl stop firewalld
setenforce 0
read -p "请输入nginx安装包路径(路径最后不要加斜杠:/;否则会出错)" lj
#解压安装包
echo "所有压缩包将解压到/opt/中"
tar zxvf $lj/nginx-1.12.2.tar.gz -C /opt/ &> /dev/null
################################################
#nginx安装
#安装环境
echo "安装环境。"
yum install pcre* zlib-devel gcc gcc-c++ -y
#创建程序型用户
echo "创建nginx系统用户。"
useradd -M -s /sbin/nologin nginx
cd /opt/nginx-1.12.2
#编译 安装路径、用户、组、统计模块
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install
#建立软连接方便系统识别命令
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
touch /etc/init.d/nginx
#创建一个启动脚本
cat >> /etc/init.d/nginx << EOF
#!/bin/bash
# chkconfig: - 99 20
# description: Nginx Service Control Script
case \$1 in
start)
/usr/local/nginx/sbin/nginx
;;
stop)
killall -s QUIT /usr/local/nginx/sbin/nginx
;;
restart)
killall -s QUIT /usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx
;;
reload)
killall -s HUP /usr/local/nginx/sbin/nginx
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
EOF
echo 'PATH=/usr/local/nginx/sbin/nginx:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile
#添加执行权限
chmod +x /etc/init.d/nginx
#将命令导入系统
chkconfig --add nginx
2.修改主配置文件,将jsp动态请求发送给Tomcat处理。
vim /usr/local/nginx/conf/nginx.conf
location ~.*.jsp$ { #匹配以jsp为结尾的请求
proxy_pass http://192.168.80.134:8080; #跳转到Tomcat的服务器
proxy_set_header Host $host; #头部请求
}
location ~.*\.(gif|jpg|png|bmp|swf|css)$ {
root html;
expires 20d; #开启缓存功能
gzip on; #开启图片压缩功能
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_types text/plain application/x-javascript text/css image/jpg image/png image/jpeg image/gif application/xml text/javascript application/x-httpd-php application/javascript application/json;
gzip_disable "MSIE [1-6]\.";
gzip_vary on;
}
将图片放进相应的目录。
3.由于图片路径要和tomcat的站点路径一致,所以也要创建相应的站点目录。
mkdir /usr/local/nginx/html/aaa
cp /mnt/overlord.png /usr/local/nginx/html/aaa
4.修改nginx站点内容
vim /usr/local/nginx/html/index.html
<!DOCTYPE html>
<html>
<head>
<title>This is static</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>this web is static</h1>
<p><em>This page is static...</em></p>
</body>
</html>
三、Tomcat服务搭建
1.Tomcat安装脚本如下:
#!/bin/bash
#安装jdk
rpm -ivh /mnt/tomcat/jdk-8u201-linux-x64.rpm
#到安装路径
cd /usr/java/jdk1.8.0_201-amd64
#jdk添加环境变量
#vim /etc/profile
echo "export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64" >> /etc/profile
echo "export CLASSPATH=\$JAVA_HOME/lib/tools.jar:\$JAVA_HOME/lib/dt.jar" >> /etc/profile
echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> /etc/profile
#更新
source /etc/profile
#查看版本
java -version
#解压Tomcat
tar zxvf /mnt/tomcat/apache-tomcat-9.0.16.tar.gz -C /usr/local/
cd /usr/local/
#重命名Tomcat
mv apache-tomcat-9.0.16/ tomcat
#建立启动和关闭软连接到bin目录中
ln -s /usr/local/tomcat/bin/startup.sh /usr/bin/
ln -s /usr/local/tomcat/bin/shutdown.sh /usr/bin/
2.在Tomcat服务器上搭建动态页面站点。
#在tomcat上部署动态网页
#站点路径
vim /usr/local/tomcat/webapps/aaa/index.jsp
<%@ 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>
<title>it works!</title>
</head>
<body>
<div> 这是动态页面</div>
<img src="overlord.png"/>
</body>
</html>
四、实验结果
查看抓包
我访问的是nginx服务器IP地址,后面加上Tomcat的动态页面路径就可以将动态请求交给Tomcat处理。此实验成功!