篇二十:tomcat部署项目请求路径

场景:tomcat部署的项目默认请求路径要包含工程名

问题:请求路径不包含工程名、或者修改请求的工程名

 

一、基础知识

  webapps:web工程存放位置,将打包好的项目war包存放目录,运行时自动解压,启动服务

  ROOT:webapps下自带的项目,安装的时候就存在,作用是请求服务不添加工程路径,默认访问ROOT工程,初始化的ROOT工程包含tomcat指导页,可以删除

 

二、替换webapps下ROOT工程

  确认server.xml中<Host>标签里面没有配置Context

  1、删除ROOT工程,然后将项目打包成ROOT.war,上传到webapps目录下,运行项目

     或者,上传到webapps中的项目,直接将 projectName.war 改成 ROOT.war

  2、访问不需要加工程名 

  优点:

    1、单工程部署简单明了,不用改配置

  不足:

    1、只能去掉请求路径中的工程名,不能替换

    2、serever.xml中配置<Context path="" docBase="ProjectName" reloadable="true" />,ROOT会运行失败,需要注释

 

三、server.xml中配置Context

  1、在tomcat/conf/server.xml最后面找到<Host> ... </Host>

  2、在Host标签中添加<Context path="" docBase="ProjectName" reloadable="true" />

     path是ProjectName的替代名,如果为空,请求路径就不包含工程名,如果是其它名字,工程名就被替换成了其它名字

  优点:

    1、级别优于ROOT,配置了 Context,ROOT将失效,不会部署

    2、可以将工程名修改成指定名字访问

 

四、修改请求路径中的工程名

  1、直接修改 webapps 中 projectName.war 的文件名为 newName.war

  2、请求路径中工程名部分就变成了 newName

 

五、Nginx反向代理

  1、nginx监听80端口

    http中默认提供了两个 Http 的 server 配置,将其中一个注释,另一个监听80端口,然后映射也是基于这个 server 配置

  2、Nginx对应tomcat中工程名的修改

    nginx代理配置中3个位置设计到名称

upstream     name1 {
      server ip:port;  
}

location name2{
    proxy_pass http://name3;  
}

  name2:匹配请求路径的一部分(端口号后的第一个路径节点),这个名称必须和代理tomcat中部署的项目名称一致;

      tomcat中工程名为空 ,name2为 "/"

      tomcat中工程名为项目名,name2为 项目名

      tomcat中工程名修改为 newName,name2为 newName

  name1:name1的作用就是匹配 proxy_pass中指定的名字,proxy_pass通过name3去匹配 upstream 中名字相同的代理

 

 

五、同一台服务器运行多个tomcat

改动三个地方

<Server port="8006" shutdown="SHUTDOWN">

 

<Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <!-- A "Connector" using the shared thread pool-->

 

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

 

posted @ 2017-05-25 13:35  刘广平  阅读(1204)  评论(0)    收藏  举报