入门【Tomcat】基础配置~

1,558 阅读16分钟

1、tomcat简介

Tomcat,属于web应用服务器,是用java语言开发的。

java组成:

  • 语言、语法规范。关键字,如: if、for、class等
  • 源代码source code
  • 依赖库
  • jvm虚拟机,也就是java的虚拟机。

示例:实现java hello

 root@localhost ~]#yum install epel-release.noarch -y
 [root@localhost ~]#yum install java -y
 [root@localhost ~]#yum provides */javac
 [root@localhost data]#yum install java-1.8.0-openjdk-devel -y     //这个可以安装javac
 [root@localhost ~]#javac  Hello.java     //编译成字节码
 #生成 class 文件
 [root@localhost ~]#java  Hello

2、java基础

2.1 动态 转换成 静态页面

2.1.1 servlet 动静结合⭐

本质是一段java程序:原理就是在java程序中嵌入 html语言

2.1.2 jsp⭐

动态网页,html是静态网页。

JSP是基于Servlet实现

优点:架构简单,比较适合小型项目开发

总结:

  • servlet:处理java代码的动态资源,把结果交给jsp
  • jsp:将动态资源镶嵌到 前端html静态页面,生成新的页面。

// nginx擅长处理静态资源,处理不了的动态资源,会转交给tomcat。tomcat会将处理完的动态资源,镶嵌在静态网页中,回复给nginx。

2.2 jdk

image.png

工具:

  • jdk: java程序、虚拟机、java运行库,包括下面两个

    • jre:库文件,提供一些第三方功能,包括下面的jvm虚拟机

      • jvm虚拟机

小tips:开发让部署java环境,其实就是安装jdk!!!

小拓展:

JDK8、JDK11是长期支持版(Long Term Support),8是免费的,

但是JDK8明年会停止维护。

2.3 安装openjdk⭐

安装tomcat之前,必须先安装jdk!!!

 java -version    //查看版本,注意只有一个横杠!

Oracle JDK 的 rpm安装:

  1. 下载软件包
 官方登录下载连接:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html     //下载需要注册
  1. 加载软件包
 ******加载软件包*******
 yum install jdk-8u291-linux-x64.rpm -y
 ​
 yum history info 6
 ​
 rpm -ql jdk1.8-2000:1.8.0_291-fcs    //查看文件列表
 ​
 find / -name javac
 ​
 vim /etc/profile.d/jdk.sh
 export JAVA_HOME=/usr/java/default
 export PATH=$JAVA_HOME/bin:$PATH
 ​
 cat /etc/profile.d/jdk.sh

3、tomcat 基础功能

3.1 手动安装tomcat⭐⭐⭐⭐⭐

  1. 安装JDK
 [root@localhost ~]#  mkdir /data
 [root@localhost ~]#  cd /data
 [root@localhost data]#  ls
 apache-tomcat-9.0.16.tar.gz  jdk-8u201-linux-x64.rpm          //加载两个安装包
 [root@localhost data]#  rpm -ivh jdk-8u201-linux-x64.rpm      //安装JDK包
 [root@localhost data]#  cd /usr/java/jdk1.8.0_201-amd64/
 [root@localhost jdk1.8.0_201-amd64]#  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@localhost jdk1.8.0_201-amd64]# source /etc/profile      //刷新配置文件,等价于 ./etc/profile
  1. 安装tomcat
 [root@localhost jdk1.8.0_201-amd64]#  cd /data
 [root@localhost data]#  tar zxvf apache-tomcat-9.0.16.tar.gz
 [root@localhost data]#  ln -s /data/apache-tomcat-9.0.16 /usr/local/tomcat    //软连接,也可以用cp -r命令
 [root@localhost data]#  cd /usr/local/tomcat/
 [root@localhost tomcat]#  /usr/local/tomcat/bin/catalina.sh start    //启动tomcat
 [root@localhost tomcat]#  /usr/local/tomcat/bin/catalina.sh stop     //关闭tomcat
 [root@localhost tomcat]#  cd bin/
 [root@localhost bin]#  useradd -s /sbin/nologin tomcat     //新建tomcat用户、不允许登录
 [root@localhost bin]#  cd /usr/local/
 [root@localhost local]#  chown tomcat:tomcat tomcat/ -R     //修改属主和属组权限
 [root@localhost local]#  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@localhost local]#  systemctl daemon-reload     //重新加载systemd文件
 [root@localhost local]#  systemctl start tomcat      //如果安装错误,前面的步骤不会报错提示,但在这步会起不来!
 [root@localhost local]#  ss -ntap |grep 8080
  1. 验证访问

真机访问 192.168.125.130

image.png

3.2 tomcat 调优

调优主要分为两部分:

  • jvm调优,也就是虚拟机调优
  • tomcat自身的调优

共享区域:heap 堆⭐
私有区域:stack 栈

// 把堆和栈放到内存中进行处理后,堆和栈里原本的东西还在,但是已经没用了,成为了垃圾。

回收垃圾注意事项:

  • 怎么确定垃圾
  • 怎么回收
  • 什么时间回收

3.2.1 jvm调优

把内存初始大小,直接调成内存最终大小。

参数说明举例
-Xms设置应用程序初始使用的堆内存大小(年轻代+老年代)-Xms2g
-Xmx设置应用程序能获得的最大堆内存早期JVM不建议超过32G,内存管理效率下降-Xms4g
total总计

jvm调优要掌握的唯一的一条命令:

 修改catalina脚本 第118行:
 JAVA_0PTS="-server -Xms128m -Xmx512m -Xx:Newsize=100m -XX:MaxNewsize=200m"     //主要就是-Xms和-Xmx

// 修改年轻态、老年态

java是个命令执行程序,后面也可以加选项,选项不是固定的,分为三种类型:

  • 标准选项
  • 非标准稳定选项
  • 非标准不稳定选项

3.3 配置文件

// webapps是主站点,appbase也是主站点。

 [root@localhost tomcat]#  ls       ###/usr/local/tomcat下面的文件夹
 apache-tomcat-9.0.16  BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE     RELEASE-NOTES  temp     work
 bin                   conf          lib              logs     README.md  RUNNING.txt    webapps
目录名字功能
webapps主站点
conf配置文件。常用的是 server.xml、context.xml、tomcat-users.xml、web.xml共4个
bin二进制程序。存放启动和关闭 Tomcat 的脚本文件,比较常用的是 catalina.sh、startup.sh、shutdown.sh 三个文件
lib运行库。存放 Tomcat 服务器的 jar 包,jar包是压缩文件,也就是java程序的压缩包。一般不作任何改动
logs日志文件。 catalina.out 较常用
temp存放 Tomcat 运行时产生的文件
work缓存。Tomcat 工作目录,一般清除 Tomcat 缓存的时候会使用到(升级版本时注意要删除里面的缓存)

3.3.1 webapps 主站点

 [root@localhost tomcat]#  cd webapps/        ###/usr/local/tomcat/webapps/下的五个项目
 [root@localhost webapps]#  ls
 docs  examples  host-manager  manager  ROOT
                  主机管理       系统管理   根

注意: 主站点下有5个项目,ROOT项目是默认的!!!必须要大写!!!

3.3.2 conf 主配置和子配置

注意配置文件对于大小写敏感

配置文件名文件路径说明
server.xml/usr/local/tomcat/conf/server.xml主配置文件,全局生效
web.xml/usr/local/tomcat/conf/web.xml子配置文件,其他项目下,也都有子配置文件
context.xml__用于定义所有web应用均需加载的Context配置,此文件为所有的webapps提供默认配置,其存放位置为WEB-INF/目录中,覆盖全局的文件
tomcat-users.xml__用户的配置文件,用户认证的账号和密码文件

小拓展:

主站点下的子配置文件/usr/local/tomcat/webapps/manager/WEB-INF/web.xml

3.3.3 logs 日志文件

主日志:/usr/local/tomcat/logs/catalina.out,可以查看报错信息。

 [root@localhost tomcat]#  cd logs      //查看日志文件,默认自动做日志分割。
 [root@localhost logs]#  ls
 catalina.2024-06-12.log  host-manager.2024-06-12.log  localhost_access_log.2024-06-12.txt
 catalina.out             localhost.2024-06-12.log     manager.2024-06-12.log
 分解:
 catalina.2024-06-12.log        //tomcat服务日志
 catalina.out                   //tomcat服务日志⭐
 host-manager.2024-06-12.log    //host manager管理日志,管理调试tomcat产生的日志
 localhost.2024-06-12.log       //默认主机日志
 localhost_access_log.2024-06-12.txt  //默认主机访问日志⭐
 manager.2024-06-12.log          //manager 管理日志

3.4 组件

3.4.1 核心组件

image.png

 格式:
 <server>                            //1层
     <service>                       //2层
         <engine>                    //3层
             <host>                  //4层
                 <context>           //5层
                 </context>          //5层
             </host>                 //4层
         </engine>                   //3层
     </service>                      //2层
 </server>                           //1层
  1. server:类似于主进程(说法不严谨,但是便于理解…)
  2. service:类似子进程,子进程可以有多个,也可以只有一个。不同的是,service也不用干活。一个service里可以有多个连接器。端口号有三个,分别是8080、8005、8009。
  • 8080:http协议 请求的接口。比如nginx和apache之间 用的是http协议。
  • 8005:tomcat管理端口,这个端口很危险,但是不能关闭,只能修改。建议把端口修改成-1,意思是无效端口。如果改成0,就是随机端口。
 ```js
 vim /usr/local/tomcat/conf/server.xml     //主配置文件
 <Server port="8005" shutdown="SHUTDOWN">    
 ***有下面几种修改方法:
 1、shutdown="gajfashfuwjdjhkhfjsahfjsf"     //改成乱码
 2、port="0"      //随机端口
 3、port="-1"     //无效端口
 ```
  • 8009:AJP协议 专用接口,基本不用,因为这个协议有漏洞。
  1. connector:连接器,相当于连接起了service和engine,主要作用是接收用户请求。

  2. engine引擎:处理用户的请求。没有指定,就走默认的虚拟主机,比如localhost

     <Engine name="Catalina" defaultHost="localhost">   //默认的localhost
    
  3. host:交给哪个虚拟主机处理请求,如果没有指定,就默认为localhost。

     示例:
     <Host name="www.a.com"  appBase="/data/web1" unpackWARs="true" autoDeploy="true"> 
     </Host>  虚拟主机域名       虚拟主机主站点         自动解压            自动部署      //注意:自动解压和自动部署,与下面3.5章节的jar包有关。
    
  4. context:基础配置,类似于优化配置。

     <Context path="/test" docBase="/data/test" reloadable="false" />
              PATH等于alias别名                  是否可以重新加载
    
  5. 最后web应用里的servlet 、jsp、html:用servlet生成动态资源,交给jsp,jsp再将动态资源镶嵌到html静态页面中。

3.4.2 ROOT 默认项目⭐⭐

主站点下有5个项目,当没有指明项目时,默认的项目是ROOT

因为ROOT是默认的,所以ROOT可以省略!!!但 其他项目不可以省略!!!

ROOT下的index.jsp是默认的动态网页!!!

 默认网页的位置:
 /usr/local/tomcat/webapps/ROOT/index.jsp

示例:

 访问/usr/local/tomcat/webapps/ROOT/index.jsp     等价于     192.168.125.130:8080     //真机访问无需加ROOT
 ​
 访问/usr/local/tomcat/webapps/docs/index.jsp     等价于     192.168.125.130:8080/docs/       //其他项目,必须要加名字

访问tomcat动态网页,必须要加端口号!!!

3.4.3 主页文件 优先级

  • index.html
  • index.htm
  • index.jsp
 vim /usr/local/tomcat/conf/web.xml     //该子配置最下面(G),定义了优先级
     <welcome-file-list>
         <welcome-file>index.html</welcome-file>
         <welcome-file>index.htm</welcome-file>
         <welcome-file>index.jsp</welcome-file>
     </welcome-file-list>
     
 复制文件,注意修改权限:⭐⭐
 chown -R tomcat:tomcat 文件夹名/

3.5 实现java项目

  • .war:WebApp打包,类zip格式文件
  • .jar:EJB类文件的打包压缩类zip格式文件
  • .rar:资源适配器类打包文件,目前已不常用
  • .ear:企业级WebApp打包,目前已不常用

3.5.1 手动部署jar包

 语法格式:
 jar cvf   /opt/app1.war   *
 命令 选项    压缩包名字   要压缩的文件(*代表所有)

示例:

 [root@localhost ~]#  cd /opt
 [root@localhost opt]#  mkdir app1
 [root@localhost opt]#  vim abc.html
 [root@localhost opt]#  vim xyz.jsp
 [root@localhost opt]#  cd app1
 [root@localhost app1]#  ls
 abc.html  xyz.jsp
 [root@localhost app1]#  jar cvf app1.war *   //把整个app1文件打包
 已添加清单
 正在添加: abc.html(输入 = 12) (输出 = 9)(压缩了 25%)
 正在添加: xyz.jsp(输入 = 12) (输出 = 9)(压缩了 25%)
 [root@localhost app1]#  ls
 abc.html  app1.war  xyz.jsp
 [root@localhost app1]#  cp app1.war /usr/local/tomcat/webapps     //把压缩包拷贝到主站点
 [root@localhost app1]#  cd /usr/local/tomcat/webapps
 [root@localhost webapps]#  ls
 app1  app1.war  docs  examples  host-manager  manager  ROOT     //压缩包已放入主站点,并且会自动解压!
 [root@localhost webapps]#  cd app1
 [root@localhost app1]#  ls
 abc.html  META-INF  xyz.jsp

3.5.2 搭建博客

 [root@localhost ~]#  cd /usr/local/tomcat/webapps
 *********加载jpress博客********
 [root@localhost webapps]#  ln -s jpress-v3.2.1 jpress
 ​
 [root@localhost 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@localhost webapps]#  yum -y install mysql-community-server      //安装mysql软件
 ​
 [root@localhost webapps]#  systemctl start mysqld
 [root@localhost webapps]#  ss -ntap |grep 3306     //mysql端口号是3306
 [root@localhost webapps]#  grep password /var/log/mysqld.log      //查看密码
 [root@localhost webapps]#  mysql -u root -p"e>&;LGtZ1m<%"
 ​
 mysql> set global validate_password_policy=0;
 mysql> set global validate_password_length=1;
 //修改密码策略
 mysql> alter user root@'localhost' identified by 'abc123';
 ​
 mysql> mysql> mysql> CREATE DATABASE blog;       //数据库名称blog
 mysql> mysql> GRANT all ON blog.* TO 'bloguser'@'%' IDENTIFIED BY 'admin123';                //数据库用户名bloguser
 mysql> GRANT all ON blog.* TO 'bloguser'@'localhost' IDENTIFIED BY 'admin123';     //数据库密码abc123
 mysql> flush privileges;

真机访问:192.168.125.130:8080/jpress 不要忘加端口号!!!

image.png

3.6 状态页

image.png

  1. server status 状态页
  2. manager app 管理项目
  3. host manager 配置虚拟主机的设置
 前两个:server status 和 manager app,属于manager项目下的功能;
 第三个:host manager,属于host-manager项目下的功能。

3.6.1 server status

3.6.1.1 如何访问server status状态页?

server status 权限非常大,为了安全考虑,默认不允许远程登录,只能本地登录!!!

添加角色:manager-gui

 vim /usr/local/tomcat/conf/tomcat-users.xml     //查看最后面(G)
 <role rolename="manager-gui"/>      //manager-gui是规定的角色名字,不能更改!
 <user username="abc" password="xyz" roles="manager-gui"/>      //名称和密码可以自定义,但是roles必须与上面一致!
 systemctl restart tomcat    //重启tomcat

本地登录方法: 虚拟机中,打开火狐浏览器,访问127.0.0.1:8080,输入用户名abc、密码xyz,即可登录成功。

image.png

3.6.1.2 远程登录 server status状态页

 [root@localhost ~]#  cd /usr/local/tomcat/webapps/manager/META-INF     //属于manager项目下
 [root@localhost META-INF]#  vim context.xml 
 allow="192\d+.\d+.\d+|127.\d+.\d+.\d+|::1|0:0:0:0:0:0:0:1" />     //添加192段
 [root@localhost META-INF]#  systemctl restart tomcat
 //通过上述设置,就可在浏览器中,远程登录状态页!

注意:这个行为十分危险!!!不建议开启远程登录!!!

3.6.2 manager app 管理项目

以jpress博客 为例:

image.png

如果点击 关闭stop,则真机访问就会报错:

image.png

通过manager app,采用可视化方法,对软件、项目等进行管理和部署。

3.6.3 host manager 管理主机

  1. 添加角色: admin-gui
 [root@localhost ~]#  vim /usr/local/tomcat/conf/tomcat-users.xml     //查看最后面(G)
   <role rolename="manager-gui"/>
   <role rolename="admin-gui"/>      //新增admin-gui
   <user username="abc" password="xyz" roles="manager-gui,admin-gui"/>    //两个角色之间,用逗号隔开
 [root@localhost ~]#  systemctl restart tomcat
  1. 设置 host-manager 项目
 [root@localhost ~]#  vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml
 allow="192.\d+.\d+.\d+|127.\d+.\d+.\d+|::1|0:0:0:0:0:0:0:1" />   //同样添加192段
 [root@localhost ~]#  systemctl restart tomcat

image.png

4、虚拟主机(实验一)

实验目的:在一台服务器上,新增两个域名 www.abc.comwww.xyz.com,通过不同域名 访问不同的项目内容。

实验环境:7-3 192.168.125.130

  1. 新建文件夹
 [root@7-3 ~]#  cd /data
 [root@7-3 data]#  ls
 [root@7-3 data]#  mkdir -pv web{1,2,3}/ROOT/    //新建6个文件夹
 [root@7-3 data]#  tree
 .
 ├── web1
 │   └── ROOT
 ├── web2
 │   └── ROOT
 └── web3
     └── ROOT
 ​
 6 directories, 0 files
  1. 创建页面
 [root@7-3 data]#  echo "web1" > /data/web1/ROOT/index.jsp
 [root@7-3 data]#  echo "web2" > /data/web2/ROOT/index.jsp
 [root@7-3 data]#  echo "web3" > /data/web3/ROOT/index.jsp
 [root@7-3 data]#  tree
 .
 ├── web1
 │   └── ROOT
 │       └── index.jsp
 ├── web2
 │   └── ROOT
 │       └── index.jsp
 └── web3
     └── ROOT
         └── index.jsp
 ​
 6 directories, 3 files
 ​
 [root@7-3 data]#  chown -R tomcat:tomcat /data/      //修改文件的属主、属组
  1. 修改主配置文件
 [root@7-3 data]#  vim /usr/local/tomcat/conf/server.xml     //改主配置
 *********复制第148149行*********
 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">
 [root@7-3 data]#  systemctl restart tomcat                   //启软件
  1. 用7-2验证
 [root@7-2 ~]#  vim /etc/hosts
 192.168.125.130  www.a.com    www.b.com    www.c.com
 ​
 [root@7-2 ~]#  curl www.a.com:8080
 web1
 [root@7-2 ~]#  curl www.b.com:8080
 web2
 [root@7-2 ~]#  curl www.c.com:8080
 web3

小拓展: localhost 托底页面

 [root@7-2 ~]#  curl 192.168.125.130:8080     //如果访问的是ip地址,那么默认访问的就是下面的localhost页面,这也是托底的页面!
       <Host name="localhost"  appBase="webapps"
             unpackWARs="true" autoDeploy="true">

5、context 配置

Context作用:

  • 路径映射:将url映射至指定路径,而非使用appBase下的物理目录,实现虚拟目录功能
  • 应用独立配置,例如:单独配置应用日志、单独配置应用访问控制

指令说明:

  • path:指的是访问的URL路径,如果path与appBase下面的子目录同名,context的docBase路径优先级更高!
  • docBase:可以是磁盘文件的绝对路径,也可以是相对路径(相对于Host的appBase)
  • reloadable:true表示如果 .class文件(字节码)有改动,就会重新加载配置文件。生产环境中,建议使用false来禁用。

示例:

 7-3:
 [root@7-3 data]#  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" />    //新加一行,PATH相当于别名。意思是,当访问www.a.com/test/,那么就替换成 /data/test
 </Host>
 [root@7-3 data]#  mkdir test     //PATH置换,后面不需要加ROOT
 [root@7-3 data]#  cd test
 [root@7-3 test]#  echo "hello" > index.jsp
 [root@7-3 data]#  chown -R tomcat:tomcat /data/    //修改权限
 [root@7-3 data]#  ll
 总用量 0
 drwxr-xr-x. 2 tomcat tomcat 23 616 17:57 test
 drwxr-xr-x. 3 tomcat tomcat 18 616 17:10 web1
 drwxr-xr-x. 3 tomcat tomcat 18 616 17:10 web2
 drwxr-xr-x. 3 tomcat tomcat 18 616 17:10 web3
 7-2:
 [root@7-2 ~]#  curl www.a.com:8080/test/     //注意:一定要加端口号和最后的/斜杠
 hello

6、tomcat+nginx 动静分离

image.png

6.1 单机反向代理

image.png

实验环境:

类型名称ip
客户机7-1192.168.125.100
代理服务器7-2192.168.125.120
真实服务器7-3192.168.125.130

实验目的:无论客户机访问的是www.a.com或者www.b.com或者www.c.com,都统一交给www.a.com进行处理。

 7-3:
 `新建网页:`
 [root@7-3 ~]#  cd /usr/local/tomcat/webapps/ROOT/
 [root@7-3 ROOT]#  mv index.jsp index.jsp.bak
 [root@7-3 ROOT]#  echo "7-3 7-3 tomcat" > index.jsp
 [root@7-3 ROOT]#  cat index.jsp
 7-3 7-3 tomcat
 ​
 `新建虚拟主机:`
 [root@7-3 ~]#  vim /usr/local/tomcat/conf/server.xml
 *********复制第148149行*********
 165       <Host name="www.a.com"  appBase="/opt/web1"
 166             unpackWARs="true" autoDeploy="true">
 167       </Host>
 168       <Host name="www.b.com"  appBase="/opt/web2"
 169             unpackWARs="true" autoDeploy="true">
 170       </Host>
 171       <Host name="www.c.com"  appBase="/opt/web3"
 172             unpackWARs="true" autoDeploy="true">
 173       </Host>
 ​
 `创建页面:`
 [root@7-3 ~]#  cd /opt
 [root@7-3 opt]#  mkdir -pv web{1,2,3}/ROOT/              //创建文件夹和页面
 [root@7-3 opt]#  echo "web111" > /opt/web1/ROOT/index.jsp
 [root@7-3 opt]#  echo "web222" > /opt/web2/ROOT/index.jsp
 [root@7-3 opt]#  echo "web333" > /opt/web3/ROOT/index.jsp
 [root@7-3 opt]#  chown -R tomcat:tomcat /opt/            //修改权限
 [root@7-3 ~]#  systemctl restart tomcat                  //重启
 7-2:
 `设置DNS域名:`
 [root@7-2 ~]#  vim /etc/hosts
 192.168.125.130  www.a.com    www.b.com    www.c.com
 ​
 [root@7-2 ~]#  systemctl stop firewalld
 [root@7-2 ~]#  setenforce 0
 [root@7-2 ~]#  yum install epel-release.noarch -y
 [root@7-2 ~]#  yum install nginx -y
 [root@7-2 ~]#  systemctl start nginx             //安装软件
 ​
 `反向代理:`
 [root@7-2 ~]#  vim /etc/nginx/nginx.conf   
 location / {
 proxy_pass http://www.a.com:8080;        //注意:一定要先在hosts中新增域名,反向代理中的域名才不会报错!
 }
 [root@7-2 ~]#  nginx -t
 [root@7-2 ~]#  nginx -s reload
 [root@7-1 ~]#  vim /etc/hosts
 192.168.125.120  www.a.com    www.b.com    www.c.com        //注意:ip是代理服务器的,与7-2不一样⭐
 ​
 [root@7-1 ~]#  curl www.a.com       //注意:域名后面不能加端口号,因为客户机访问的是代理,代理是nginx!
 web111
 [root@7-1 ~]#  curl www.b.com
 web111
 [root@7-1 ~]#  curl www.c.com
 web111

6.2 多机反向代理(负载均衡)

image.png 实验环境:

7-1 客户机 192.168.125.100

7-3 真实服务器 192.168.125.130 tomcat

7-4 代理服务器 192.168.125.140 nginx

7-5 真实服务器 192.168.125.150 tomcat

实验目的:

 7-5:
 [root@7-5 ~]#  systemctl stop firewalld
 [root@7-5 ~]#  setenforce 0
 [root@7-5 ~]#  cd /usr/local/tomcat/webapps/ROOT/
 [root@7-5 ROOT]#  mv index.jsp index.jsp.bak
 [root@7-5 ROOT]#  echo "this is 7-5" > index.jsp
 7-3:
 [root@7-3 ~]#  systemctl stop firewalld
 [root@7-3 ~]#  setenforce 0
 [root@7-3 ~]#  cd /usr/local/tomcat/webapps/ROOT/
 [root@7-3 ROOT]#  mv index.jsp index.jsp.bak
 [root@7-3 ROOT]#  echo "this is 7-3 7-3" > index.jsp
 7-4:
 [root@localhost ~]# vim /etc/nginx/nginx.conf
 `负载均衡:`
 http语句块:
         upstream tomcat {
         server 192.168.125.130:8080;
         server 192.168.125.150:8080;
         }
         
 `反向代理:`
 server语句块:       
         location / {
         proxy_pass http://tomcat;
         }
 [root@localhost ~]# nginx -t
 [root@localhost ~]# nginx -s reload
 7-1:验证
 [root@7-1 ~]#  curl 192.168.125.140/index.jsp
 this is 7-3 7-3
 [root@7-1 ~]#  curl 192.168.125.140/index.jsp
 this is 7-5

6.3 多机 多级 反向代理

image.png

实验环境:

7-1 既是客户端,也是代理服务器 192.168.125.100 nginx

7-2 192.168.125.120 nginx —— 7-3 192.168.125.130 tomcat

7-4 192.168.125.140 nginx —— 7-5 192.168.125.150 tomcat

实验目的: 7-1 反向代理、负载均衡;7-2和7-3、7-4和7-5动静分离

  1. 设置反向代理和负载均衡
 7-1:代理服务器
 [root@7-1 ~]#  systemctl stop firewalld
 [root@7-1 ~]#  setenforce 0
 [root@7-1 ~]#  vim /apps/nginx/conf/nginx.conf
 ​
 http语句块:负载均衡
     upstream web {
     server 192.168.125.120;
     server 192.168.125.140;
     }
 server语句块:反向代理
         location / {
         proxy_pass http://web;
         }
         
 [root@7-1 ~]#  nginx -t
 [root@7-1 ~]#  nginx -s reload
  1. 在yum安装的nginx下,设置动静分离
 7-2: yum安装的nginx
 [root@7-2 ~]#  systemctl restart nginx
 [root@7-2 ~]#  vim /etc/nginx/nginx.conf
 ​
 server语句块:动静分离
         location ~ .jsp$ {
         proxy_pass http://192.168.125.130:8080;    //tomcat记得加8080端口
         }
         location ~ .(jpg|png|html)$ {
         root /usr/share/nginx/html;
         }
         
 [root@7-2 ~]#  nginx -t
 [root@7-2 ~]#  nginx -s reload
 ​
 准备网页:
 [root@7-2 ~]#  cd /usr/share/nginx/html
 [root@7-2 html]#  echo "7-2 nginx" > index.html
  1. 在编译安装的nginx下,设置动静分离
 7-4: 编译安装的nginx
 [root@7-4 ~]# systemctl restart nginx
 [root@7-4 ~]# vim /apps/nginx/conf.d/pc.conf
 ​
 server语句块:动静分离
 server {
 listen 80;
 server_name www.pc.com;
 root /data/html;
         location ~ .jsp$ {
         proxy_pass http://192.168.125.150:8080;
         }
         location ~ .(jpg|png|html)$ {
         root /data/html;
         }
         }
         
 [root@7-4 ~]# nginx -t
 [root@7-4 ~]# nginx -s reload
 ​
 准备网页:
 [root@7-4 ~]# mkdir -p /data/html
 [root@7-4 ~]# cd /data/html
 [root@7-4 html]# echo "7-4 7-4 nginx" > index.html
  1. 准备tomcat网页,如果不想加项目,必须放到默认的ROOT下面。
 7-3: tomcat
 [root@7-3 ~]#  cd /usr/local/tomcat/webapps/ROOT     //默认网页存放路径
 [root@7-3 ROOT]#  mv index.jsp index.jsp.bak
 [root@7-3 ROOT]#  echo "7-3 tomcat" > index.jsp
 7-5: tomcat
 [root@7-5 ~]#  cd /usr/local/tomcat/webapps/ROOT
 [root@7-5 ROOT]#  mv index.jsp index.jsp.bak
 [root@7-5 ROOT]#  echo "7-5 7-5 tomcat" > index.jsp
  1. 客户端验证
 7-1:
 [root@7-1 conf]#  curl 192.168.125.100/index.html
 7-4 7-4 nginx
 [root@7-1 conf]#  curl 192.168.125.100/index.html
 7-2 nginx
 [root@7-1 conf]#  curl 192.168.125.100/index.jsp
 7-3 tomcat
 [root@7-1 conf]#  curl 192.168.125.100/index.jsp
 7-5 7-5 tomcat