Nginx+Tomcat架构拓扑
环境部署
Nginx服务器:IP地址192.168.32.3
Tomcat服务器1:IP地址192.168.32.4
Tomcat服务器2:IP地址192.168.32.5
关闭防火墙,关闭开机自启
systemctl stop firewalld.service
setenforce 0
Nginx 主机安装
1、安装 nginx 软件包
关闭防火墙,将 nginx 所需软件包解压在 /opt 目录下
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/
2、安装所需依赖包
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
3、创建 nginx 运行用户、组
useradd -M -s /sbin/nologin nginx
4、编译安装 Nginx
cd /opt/nginx-1.12.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
#-----配置命令解释
--prefix=/usr/local/nginx #指定nginx的安装路径
--user=nginx #指定用户名
--group=nginx #指定组名
--with-http_stub_status_module #启用 http_stub_status_module 模块以支持状态统计
#-----
make && make install
#让系统识别nginx的操作命令, 加入到环境变量中
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
5、添加 Nginx 系统服务
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service
6、检查、启动、重启、停止 nginx服务
#检查配置文件是否配置正确
nginx -t
#启动 nginx
nginx
#查看端口是否启动
netstat -natp | grep 80
结果:
Tomcat 安装及配置
安装 Tomcat
在部署 Tomcat 之前必须安装好 jdk,因为 jdk 是 Tomcat 运行的必要环境。
java -verion #查看jdk版本
1.关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下
jdk-8u201-linux-x64.rpm
apache-tomcat-9.0.16.tar.gz
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
2.安装JDK
cd /opt
rpm -qpl jdk-8u201-linux-x64.rpm
rpm -ivh jdk-8u201-linux-x64.rpm
java -version
3.设置JDK环境变量
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
source /etc/profile.d/java.sh
java -version
4.安装启动Tomcat
cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
/usr/local/tomcat/bin/startup.sh #启动Tomcat
netstat -natp | grep 8080 #查看是否启动成功
Tomcat 服务器1配置
mkdir -p /usr/local/tomcat/webapps/cc #创建一个测试的目录
vim /usr/local/tomcat/webapps/cc/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> #动态页面的配置
<html>
<head>
<title>JSP test1 page </title>
</head>
<body>
<% out.println("动态页面 1,http://www.test1.com");%>
</body>
</html>
#编辑tomcat主配置文件,添加虚拟主机配置,这里要先删掉原先的主机名等配置
vim /usr/local/tomcat/conf/server.xml
-------------------------------------------------------------------------------------------------
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"
#找到这个先删掉,否则最后会出错
----------------------------------------------------------------------------------------
#在行尾162行处插入下面配置,需注意结尾的</Host>
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidati on="false" xmlNamespaceAware="false">
149 <Context docBase="/usr/local/tomcat/webapps/cc" path="" reloadable="true" />
</Host>
----------------------------------------------------------------------------------------
shutdown.sh
startup.sh #重启服务
Tomcat 服务器2配置
mkdir -p /usr/local/tomcat/webapps/cc #创建一个测试的目录
mkdir -p /usr/local/tomcat/webapps/cc #动态页面的配置
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test2 page </title>
</head>
<body>
<% out.println("动态页面 2,http://www.test2.com");%>
</body>
</html>
#编辑tomcat主配置文件,添加虚拟主机配置,这里要先删掉原先的主机名等配置
vim /usr/local/tomcat/conf/server.xml
----------------------------------------------------------------------------------------
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"
#找到这个先删掉,否则最后会出错
----------------------------------------------------------------------------------------
#在行尾162行处插入下面配置,需注意结尾的</Host>
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/usr/local/tomcat/webapps/cc" path="" reloadable="true" />
</Host>
----------------------------------------------------------------------------------------
shutdown.sh
startup.sh #重启服务
Nginx server 配置
静态页面配置
echo '<html><body><h1>this is static</h1></body></html>' > /usr/local/nginx/html/index.html
mkdir -p /usr/local/nginx/html/image
cd /usr/local/nginx/html/image
#主配置文件57行下添加下面配置参数,让页面能够加载图片
vim /usr/local/nginx/conf/nginx.conf
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
root /usr/local/nginx/html/picture;
expires 10d;
}
nginx -t
systemctl restart nginx.service
配置nginx主配置文件
vim /usr/local/nginx/conf/nginx.conf
......
#配置负载均衡的服务器列表,weight参数表示权重,权重越高,被分配到的概率越大
#gzip on; #33行下面加入以下内容
upstream tomcat_server {
server 192.168.16.14:8080 weight=1;
server 192.168.16.15:8080 weight=1;
}
#45行下加入下面配置参数
#access_log logs/host.access.log main;
location ~ .*\.jsp$ {
proxy_pass http://tomcat_server;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
添加参数解析
vim /usr/local/nginx/conf/nginx.conf
location ~ .*\.jsp$ {
#把nginx接收到的客户端的ip地址赋值给跳转到tomcat请求中的源ip,识别客户的真实ip,并且赋值与跳转
proxy_pass http://tomcat_server;
proxy_set_header HOST $host;
#设定后端的web服务器接收到的请求访问的主机名(域名或ip、端口),默认host的值为proxy_pass直连设置的主机名
proxy_set_header X-Real-IP $remote_addr;
#把$remote_addr复制给X-Real-IP(自定义),来回去源IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#在nginx最为代理服务器时,设置的IP列表,会把经过的及其ip,代理及其ip都记录下来
检查主配置文件语法并重启服务
nginx -t
systemctl restart nginx.service
验证结果