一、 安装Tomcat
注意:安装 tomcat 前必须先部署JDK
1. 安装JDK
- 方法1:Oracle JDK 的二进制文件安装
[root@node5 ~]# mkdir /data
[root@node5 ~]# cd /data/
[root@node5 data]# rz
[root@node5 data]# ls
jdk-8u291-linux-x64.tar.gz
[root@node5 data]# tar xf jdk-8u291-linux-x64.tar.gz
[root@node5 data]# ln -s /data/jdk1.8.0_291 /usr/local/jdk
[root@node5 data]# cd /usr/local/jdk/
[root@node5 jdk]# ls
bin COPYRIGHT include javafx-src.zip jmc.txt jre legal lib LICENSE man README.html release src.zip THIRDPARTYLICENSEREADME-JAVAFX.txt THIRDPARTYLICENSEREADME.txt
[root@node5 jdk]# vim /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib/
[root@node5 jdk]# exit
[root@node5 ~]# java -version
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
- 方法2:Oracle JDK 的rpm安装
[root@node5 ~]# cd /data
[root@node5 data]# rz
[root@node5 data]# ls
apache-tomcat-9.0.16.tar.gz jdk-8u201-linux-x64.rpm
[root@node5 data]# rpm -ivh jdk-8u201-linux-x64.rpm
[root@node5 data]# vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
[root@node5 data]# . /etc/profile
[root@node5 data]# java -version
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
2. 安装Tomcat
[root@node5 data]# ls
apache-tomcat-9.0.16.tar.gz jdk-8u201-linux-x64.rpm
[root@node5 data]# tar xf apache-tomcat-9.0.16.tar.gz
[root@node5 data]# ls
apache-tomcat-9.0.16 apache-tomcat-9.0.16.tar.gz jdk-8u201-linux-x64.rpm
[root@node5 data]# ln -s /data/apache-tomcat-9.0.16 /usr/local/tomcat
[root@node5 data]# cd /usr/local/tomcat/
[root@node5 tomcat]# ls
bin BUILDING.txt conf CONTRIBUTING.md lib LICENSE logs NOTICE README.md RELEASE-NOTES RUNNING.txt temp webapps work
[root@node5 tomcat]# cd bin
[root@node5 bin]# ls
bootstrap.jar catalina-tasks.xml commons-daemon.jar configtest.sh digest.sh setclasspath.bat shutdown.sh tomcat-juli.jar tool-wrapper.sh
catalina.bat ciphers.bat commons-daemon-native.tar.gz daemon.sh makebase.bat setclasspath.sh startup.bat tomcat-native.tar.gz version.bat
catalina.sh ciphers.sh configtest.bat digest.bat makebase.sh shutdown.bat startup.sh tool-wrapper.bat version.sh
`方法1:执行自带脚本,不推荐!`
[root@node5 bin]# ./catalina.sh start
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/java/jdk1.8.0_201-amd64
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@node5 bin]# ss -natp |grep 8080
LISTEN 0 100 :::8080 :::* users:(("java",pid=15931,fd=54))
`方法2:`
[root@node5 bin]# useradd -s /sbin/nologin tomcat //新建用户
[root@node5 bin]# cd /usr/local/
[root@node5 local]# chown tomcat:tomcat tomcat/ -R //修改属主和属组
[root@node5 bin]# cat > /usr/lib/systemd/system/tomcat.service <<EOF
> [Unit]
> Description=Tomcat
> After=syslog.target network.target
>
> [Service]
> Type=forking
> ExecStart=/usr/local/tomcat/bin/startup.sh
> ExecStop=/usr/local/tomcat/bin/shutdown.sh
> RestartSec=3
> PrivateTmp=true
> User=tomcat
> Group=tomcat
>
> [Install]
> WantedBy=multi-user.target
>
> EOF
[root@node5 local]# systemctl daemon-reload
[root@node5 local]# systemctl start tomcat
[root@node5 local]# ss -natp |grep 8080
LISTEN 0 100 :::8080 :::* users:(("java",pid=16475,fd=54))
二、 配置文件及核心组件
1. 配置文件
1.1 安装目录下文件
| 目录名字 | 功能 |
|---|---|
| bin | 存放启动和关闭 Tomcat 的脚本文件,比较常用的是 catalina.sh、startup.sh、shutdown.sh 三个文件 |
| conf | 存放 Tomcat 服务器的各种配置文件,比较常用的是 server.xml、context.xml、tomcat-users.xml、web.xml 四个文件。 |
| lib | 存放 Tomcat 服务器的 jar 包,一般不作任何改动,除非连接第三方服务,比如 redis,那就需要添加相对应的 jar 包 |
| logs | 存放 Tomcat 日志 catalina.out |
| temp | 存放 Tomcat 运行时产生的文件 |
| webapps | 存放项目资源的目录 |
| work | Tomcat 工作目录,一般清除 Tomcat 缓存的时候会使用到(升级版本时注意要删除里面的缓存) |
-
bin -
conf -
lib -
logs -
temp -
webapps -
work
1.2 conf 子目录文件
| 文件名 | 说明 |
|---|---|
| server.xml | 主配置文件 全局生效 |
| web.xml | 每个webapp只有“部署"后才能被访问,它的部署方式通常由web.xml进行定义,其存放位置为WEB-INF/目录中;此文件为所有的webapps提供默认部署相关的配置,每个web应用也可以使用专用配置文件,来覆盖全局文件 |
| context.xml | 用于定义所有web应用均需加载的Context配置,此文件为所有的webapps提供默认配置,每个web应用也可以使用自已专用的配置,它通常由专用的配置文件context.xml来定义,其存放位置为WEB-INF/目录中,覆盖全局的文件 |
| tomcat-users.xml | 用户认证的账号和密码文件 |
| catalina.policy | 当使用security选项启动omcat时,用于为tomcat设置安全策略 |
| catalina.properties | Tomcat环境变量的配置,用于设定类加载器路径,以及一些与JVM调优相关参数 |
| logging.properties | Tomcat日志系统相关的配置,可以修改日志级别和日志路径等 |
注意:配置文件对于大小写敏感
2. 组件
2.1 组件分层和分类
- 顶级组件
- Server,代表整个Tomcat容器,一台主机可以启动多tomcat 实例 ,需要确保端口不要产生冲突
- 服务类组件
- Service,实现组织Engine和Connector,建立两者之间关联关系, service 里面只能包含一个Engine
- 连接器组件
- Connector,有HTTP(默认端口8080/tcp)、HTTPS(默认端口8443/tcp)、AJP(默认端口8009/tcp)协议的连接器,AJP(Apache Jserv protocol)是一种基于TCP的二进制通讯协议。
- 容器类
- Engine、Host(虚拟主机)、Context(上下文件,解决路径映射)都是容器类组件,可以嵌入其它组件,内部配置如何运行应用程序。
- 内嵌类
- 可以内嵌到其他组件内,valve、logger、realm、loader、manager等。以logger举例,在不同容器组件内分别定义。
- 集群类组件
- listener、cluster
2.2 核心组件
| 名称 | 说明 |
|---|---|
| server | 服务器,Tomcat运行的进程实例,一个Server中可以有多个service,但通常就一个 |
| service | 服务,用来组织Engine(引擎)和Connector(连接器,端口)的对应关系,一个service中只有一个Engine |
| connector | 连接器,负责客户端的HTTP、HTTPS、AJP等协议连接。一个Connector只属于某一个Engine |
| Engine | 即引擎,用来响应并处理用户请求。一个Engine上可以绑定多个Connector |
| Host | 即虚拟主机,可以实现多虚拟主机,例如使用不同的主机头区分 |
| Context | 应用的上下文,配置特定url路径映射和目录的映射关系: url => directory |
范例:多个组件关系 conf/server.xml
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN"> //此处建议将8005端口号修改为-1或0
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true">
<Context >
<Context />
</Host>
</Engine>
</Service>
</Server>
3. 磁盘文件和访问的url对应关系
等于访问
102.168.204.50:8080 ----------------> /usr/local/tomcat/webapps/ROOT/index.jsp
102.168.204.50:8080/blog -----------> /usr/local/tomcat/webapps/blog/index.jsp
ROOT 和 blog 是同级项目文件
ROOT 是默认的项目,可以省略不写,其他的项目不可以省略
webapps 才是主站点
如果是访问的是ROOT下的文件,url可以省略ROOT,否则不行
4. 主页文件的优先级
- index.html
- index.htm
- index.jsp
[root@localhost conf]# vim /usr/local/tomcat/conf/web.xml
//此文件末尾定义了优先级,可以在站点的目录下配置
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
项目特殊要求可以写在子配置文件中
[root@localhost blog]#chown -R tomcat:tomcat WEB-INF/ //修改权限
三、 实现java项目
.war:WebApp打包,类zip格式文件,通常包括一个应用的所有资源,比如jsp,html,配置文件等.jar:EJB类文件的打包压缩类zip格式文件,,包括很多的class文件, 网景公司发明.rar:资源适配器类打包文件,目前已不常用.ear:企业级WebApp打包,目前已不常用
传统应用开发测试后,通常打包为war格式,这种文件部署到Tomcat的webapps目录下,并默认会自动
conf/server.xml中文件配置
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
1. 手动部署 jar 包
[root@node5 conf]# cd /opt
[root@node5 opt]# mkdir app1
[root@node5 opt]# cd app1/
[root@node5 app1]# vim test.html
test test test
[root@node5 app1]# vim test.jsp
//直接复制
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<! DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jsp例子</title>
</head>
<body>
后面的内容是服务器端动态生成字符串,最后拼接在一起
<%
out.println ("test jsp");
%>
%%<br>
%<%=request.getRequestURL()%>
%</body>
%</html>
[root@node5 app1]# jar cvf /opt/app1.war * //打包
已添加清单
正在添加: test.html(输入 = 15) (输出 = 10)(压缩了 33%)
正在添加: test.jsp(输入 = 346) (输出 = 298)(压缩了 13%)
[root@node5 app1]# cd /opt/
[root@node5 opt]# ls
app1 app1.war rh
[root@node5 opt]# cp app1.war /usr/local/tomcat/webapps/
[root@node5 opt]# cd /usr/local/tomcat/webapps/
[root@node5 webapps]# ls
app1 app1.war docs examples host-manager manager ROOT
//这里可以看到,app1.war自动解压为app1
[root@node5 webapps]# tree app1
app1
├── META-INF
│ ├── MANIFEST.MF
│ └── war-tracker
├── test.html
└── test.jsp
1 directory, 4 files
浏览器访问192.168.204.50:8080/app1/test.html进行验证
`注意:更新时记得清除缓存`
[root@node5 opt]# cd /usr/local/tomcat/work/
[root@node5 work]# ls
Catalina
[root@node5 work]# tree Catalina/
Catalina/
└── localhost
├── app1
│?? └── org
│?? └── apache
│?? └── jsp
│?? ├── test_jsp.class //缓存
│?? └── test_jsp.java //缓存
├── docs
├── examples
├── host-manager
├── manager
└── ROOT
└── org
└── apache
└── jsp
├── index_jsp.class
└── index_jsp.java
13 directories, 4 files
2. 自建博客
[root@node5 tomcat]# cd webapps/
[root@node5 webapps]# rz //上传安装包
[root@node5 webapps]# ls
docs examples host-manager jpress-v3.2.1.war manager ROOT
[root@node5 webapps]# ln -s jpress-v3.2.1 jpress
[root@node5 webapps]# cat >/etc/yum.repos.d/mysql.repo <<EOF
> [mysql57-community]
> name=MySQL 5.7 Community Server
> baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/
> enabled=1
> gpgcheck=0
> EOF
[root@node5 webapps]# yum -y install mysql-community-server
[root@node5 webapps]# systemctl start mysqld
[root@node5 webapps]# grep password /var/log/mysqld.log
2024-06-13T10:52:47.152752Z 1 [Note] A temporary password is generated for root@localhost: hkH5l!mq%iyR
[root@node5 webapps]# mysql -u root -p'hkH5l!mq%iyR'
mysql> set global validate_password_policy=0; //修改密码策略
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password_length=1; //修改密码策略
Query OK, 0 rows affected (0.00 sec)
mysql> alter user root@'localhost' identified by 'abc@123';
Query OK, 0 rows affected (0.00 sec)
CREATE DATABASE blog;
GRANT all ON blog.* TO 'bloguser'@'%' IDENTIFIED BY 'admin123';
GRANT all ON blog.* TO 'bloguser'@'localhost' IDENTIFIED BY 'admin123';
flush privileges;
四、 状态页
- server status 状态页
- manger app 管理项目 (不建议开启)
- host manger 配置虚拟主机的设置 (不建议开启)
1. 启用状态页 (只能本地访问)
默认的管理页面被禁用,修改用户认证的配置文件conf/tomcat-users.xml,将状态页启用。
[root@node5 tomcat]# cd conf/
[root@node5 conf]# ls
Catalina catalina.properties jaspic-providers.xml logging.properties tomcat-users.xml web.xml
catalina.policy context.xml jaspic-providers.xsd server.xml tomcat-users.xsd
[root@node5 conf]# vim tomcat-users.xml
<role rolename="manager-gui"/> //角色
<user username="cxk" password="cxk" roles="manager-gui"/> //指定用户和密码
[root@node5 conf]# systemctl restart tomcat.service
注意:此时只能通过本地访问,不能进行远程访问
2. 开启允许远程状态页
[root@node5 tomcat]# cd /usr/local/tomcat/webapps/manager/
[root@node5 manager]# ls
images index.jsp META-INF status.xsd WEB-INF xform.xsl
[root@node5 manager]# cd META-INF/
[root@node5 META-INF]# ls
context.xml
[root@node5 META-INF]# vim context.xml
allow="192\.\d+\.\d+\.\d+|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> //添加允许的主机地址
[root@node5 META-INF]# systemctl restart tomcat.service
3. host manger
[root@node5 tomcat]# cd conf/
[root@node5 conf]# vim tomcat-users.xml
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="cxk" password="cxk" roles="manager-gui,admin-gui"/>
[root@node5 tomcat]# cd webapps/host-manager/
[root@node5 host-manager]# ls
images index.jsp manager.xml META-INF WEB-INF
[root@node5 host-manager]# vim META-INF/context.xml
allow="192\.\d+\.\d+\.\d+|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
[root@node5 host-manager]# systemctl restart tomcat
五、 端口号
- 8005:Tomcat 管理端口,比如关闭Tomcat。很危险,建议改成 -1 无效 、或改为 0
- 8009:AJP协议专用接口
- 8080:http协议请求的接口
端口8005/tcp安全配置管理
8005是Tomcat的管理端口,默认监听在127.0.0.1上。无需验证就可发送SHUTDOWN (大小写敏感)这个字符串,tomcat接收到后就会关闭此Server。
此管理功能建议禁用,可将SHUTDOWN改为一串猜不出的字符串实现或者port修改成 0,会使用随机端口如:36913
port设为-1等无效端口,将关闭此功能此行不能被注释,否则无法启动tomcat服务
示例:
<Server port="8005" shutdown="44ba3c71d57f494992641b258b965f28">
六、 虚拟主机配置
- 创建虚拟主机前,必须先创建相关目录
[root@node5 host-manager]# cd /data
[root@node5 data]# mkdir web{1,2,3}/ROOT -pv
mkdir: 已创建目录 "web1"
mkdir: 已创建目录 "web1/ROOT"
mkdir: 已创建目录 "web2"
mkdir: 已创建目录 "web2/ROOT"
mkdir: 已创建目录 "web3"
mkdir: 已创建目录 "web3/ROOT"
[root@node5 data]# echo "web1 web1" > /data/web1/ROOT/index.jsp
[root@node5 data]# echo "web2 web2" > /data/web2/ROOT/index.jsp
[root@node5 data]# echo "web3 web3" > /data/web3/ROOT/index.jsp
[root@node5 data]# chown -R tomcat.tomcat /data/ //修改权限
- 修改配置文件
[root@node5 data]# vim /usr/local/tomcat/conf/server.xml
165 <Host name="www.a.com" appBase="/data/web1"
166 unpackWARs="true" autoDeploy="true">
167 </Host>
168 <Host name="www.b.com" appBase="/data/web2"
169 unpackWARs="true" autoDeploy="true">
170 </Host>
171 <Host name="www.c.com" appBase="/data/web3"
172 unpackWARs="true" autoDeploy="true">
173 </Host>
//Host name="www.a.com" 定义一个名为www.a.com的主机
//appBase="/data/web1" 指定其应用程序的基本路径为/data/web1
//unpackWARs="true" 表示部署WAR文件时会进行解压
//autoDeploy="true" 表示自动部署。这意味着当你放置WAR文件到指定目录时,Tomcat会自动部署这些应用程序。
[root@node5 data]# systemctl restart tomcat
七、 Context配置
Context作用:
- 路径映射:将url映射至指定路径,而非使用appBase下的物理目录,实现虚拟目录功能
- 应用独立配置,例如单独配置应用日志、单独配置应用访问控制
//映射指定路径
<Context path="/test" docBase="/data/test" reloadable="true" />
//映射站点的根目录
<Context path="/" docBase="/data/website" reloadable="true" />
//还可以添加日志等独立的配置
<Context path="/test" docBase="/data/test" reloadable="true" >
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_test_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Context>
详解:
path:指的是访问的URL路径,如果path与appBase下面的子目录同名,context的docBase路径优先更高docBase:可以是磁盘文件的绝对路径,也可以是相对路径(相对于Host的appBase)reloadable:true表示如果WEB-INF/classes或META-INF/lib目录下.class文件有改动,就会将WEB应用重新加载。生产环境中,建议使用false来禁用。
[root@node5 conf]# cd /usr/local/tomcat/conf/
[root@node5 conf]# vim server.xml
<Host name="www.a.com" appBase="/data/web1"
unpackWARs="true" autoDeploy="true">
<Context path="/test" docBase="/data/test" reloadable="false" />
// 如果访问 www.a.com/test/ 那么就替换成 /data/test
</Host>
[root@node5 conf]# cd /data
[root@node5 data]# mkdir test
[root@node5 data]# cd test/
[root@node5 test]# echo "this is test haha" > index.jsp
[root@node5 test]# chown -R tomcat.tomcat /data/ //修改权限
[root@node5 test]# systemctl restart tomcat
[root@localhost ~]# curl www.a.com:8080/test/ //验证
this is test haha //置换为/data/test/内容
八、 Tomcat Nginx 动静分离
1. 反向代理单机
.
- 代理服务器:192.168.204.20
- Tomcat服务器:192.168.204.50
- 客户端:192.168.204.60
代理服务器:
[root@node2 ~]# vim /etc/hosts
192.168.204.50 www.a.com www.b.com www.c.com
//填写Tomcat服务器地址
[root@node2 ~]# systemctl stop firewalld
[root@node2 ~]# setenforce 0
[root@node2 ~]# yum install epel-release.noarch -y
[root@node2 ~]# yum insta1l nginx -y
[root@node2 ~]# systemctl start nginx
[root@node2 ~]# vim /etc/nginx/nginx.conf
46 location / {
47 proxy_pass http://www.a.com:8080;
48 }
[root@node2 ~]# nginx -t
[root@node2 ~]# nginx -s reload
Tomcat服务器:
[root@node5 data]# cd /usr/local/tomcat/webapps/ROOT/
[root@node5 ROOT]# mv index.jsp index.jsp.bak
[root@node5 ROOT]# vim index.jsp
7-5 7-5
[root@node5 ROOT]# vim /usr/local/tomcat/conf/server.xml //创建虚拟主机
<Host name="www.a.com" appBase="/data/web1"
unpackWARs="true" autoDeploy="true">
<Context path="/test" docBase="/data/test" reloadable="false" />
</Host>
<Host name="www.b.com" appBase="/data/web2"
unpackWARs="true" autoDeploy="true">
</Host>
<Host name="www.c.com" appBase="/data/web3"
unpackWARs="true" autoDeploy="true">
</Host>
[root@node5 ROOT]# cd /data
[root@node5 data]# mkdir web{1,2,3}/ROOT -p
[root@node5 data]# echo "a.com" > /data/web1/ROOT/index.jsp
[root@node5 data]# echo "b.com" > /data/web2/ROOT/index.jsp
[root@node5 data]# echo "c.com" > /data/web3/ROOT/index.jsp
[root@node5 data]# chown -R tomcat.tomcat /data/ //修改权限
[root@node5 data]# systemctl restart tomcat
客户端:
[root@node6 ~]# vim /etc/hosts
192.168.204.20 www.a.com www.b.com www.c.com
//填写代理服务器地址
[root@node6 ~]# curl www.a.com
a.com
[root@node6 ~]# curl www.b.com
a.com
[root@node6 ~]# curl www.c.com
a.com
2. 反向代理多机
2.1 负载均衡
- 代理服务器:192.168.204.20
- Tomcat服务器1:192.168.204.40
- Tomcat服务器2:192.168.204.50
- 客户端:192.168.204.60
Tomcat服务器1:
安装Tomcat
[root@node4 local]# cd /usr/local/tomcat/webapps/ROOT/
[root@node4 ROOT]# mv index.jsp index.jsp.bak
[root@node4 ROOT]# vim index.jsp
7-4 7-4
Tomcat服务器2:
安装Tomcat
[root@node5 local]# cd /usr/local/tomcat/webapps/ROOT/
[root@node5 ROOT]# mv index.jsp index.jsp.bak
[root@node5 ROOT]# vim index.jsp
7-5 7-5
代理服务器:
[root@node2 ~]# vim /etc/nginx/nginx.conf
upstream tomcat {
server 192.168.204.40:8080;
server 192.168.204.50:8080;
}
location / {
proxy_pass http://tomcat;
}
[root@node2 ~]# nginx -s reload
客户端:
[root@node6 ~]# curl 192.168.204.20
7-4 7-4
[root@node6 ~]# curl 192.168.204.20
7-4 7-4
[root@node6 ~]# curl 192.168.204.20
7-5 7-5
[root@node6 ~]# curl 192.168.204.20
7-4 7-4
[root@node6 ~]# curl 192.168.204.20
7-5 7-5
2.2 动静分离
代理服务器:
[root@node2 ~]# vim /etc/nginx/nginx.conf
location ~ \.jsp$ {
proxy_pass http://tomcat;
}
location ~ \.(jpg|html|png)$ {
root /usr/share/nginx/html;
}
[root@node2 ~]# nginx -s reload
[root@node2 ~]# cd /usr/share/nginx/html/
[root@node2 html]# echo static > index.html
客户端:
[root@node6 ~]# curl 192.168.204.20/index.html //访问静态资源
static
[root@node6 ~]# curl 192.168.204.20/index.jsp //访问动态资源
7-4 7-4
[root@node6 ~]# curl 192.168.204.20/index.jsp
7-5 7-5
3. 反向代理多机多级
- 代理服务器:192.168.204.10
- nginx服务器1:192.168.204.20
- nginx服务器2:192.168.204.30
- Tomcat服务器1:192.168.204.40
- Tomcat服务器2:192.168.204.50
- 客户端:192.168.204.60
代理服务器:
[root@node1 ~]# yum install epel-release.noarch -y
[root@node1 ~]# yum install nginx -y
[root@node1 ~]# systemctl start nginx
[root@node1 ~]# vim /etc/nginx/nginx.conf
//http语句块中
30 upstream web {
31 server 192.168.204.20;
32 server 192.168.204.30;
33 }
//server语句块中
48 location / {
49 proxy_pass http://web;
50 }
[root@node1 ~]# nginx -s reload
nginx服务器1:
[root@node2 ~]# yum install epel-release.noarch -y
[root@node2 ~]# yum install nginx -y
[root@node2 ~]# systemctl start nginx
[root@node2 html]# vim /etc/nginx/nginx.conf
location ~ \.jsp$ {
proxy_pass http://192.168.204.40:8080;
}
location ~ \.(jpg|html|png)$ {
root /usr/share/nginx/html;
}
[root@node2 html]# nginx -s reload
[root@node2 html]# cd /usr/share/nginx/html/
[root@node2 html]# echo 7-2 > index.html
nginx服务器2:
[root@node3 ~]# yum install epel-release.noarch -y
[root@node3 ~]# yum install nginx -y
[root@node3 ~]# systemctl start nginx
[root@node3 ~]# vim /etc/nginx/nginx.conf
location ~ \.jsp$ {
proxy_pass http://192.168.204.50:8080;
}
location ~ \.(jpg|html|png)$ {
root /usr/share/nginx/html;
}
[root@node3 html]# nginx -s reload
[root@node3 html]# cd /usr/share/nginx/html/
[root@node3 html]# echo 7-3 > index.html
Tomcat服务器1:
安装Tomcat
[root@node4 ~]# cd /usr/local/tomcat/webapps/ROOT/
[root@node4 ROOT]# mv index.jsp index.jsp.bak
[root@node4 ROOT]# echo "7-4 7-4" > index.jsp
Tomcat服务器2:
安装Tomcat
[root@node5 ~]# cd /usr/local/tomcat/webapps/ROOT/
[root@node5 ROOT]# mv index.jsp index.jsp.bak
[root@node5 ROOT]# echo "7-5 7-5" > index.jsp
客户端验证: