zhihuifan

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  83 随笔 :: 0 文章 :: 4 评论 :: 17万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
1.一个tomcat运行多个项目:
把项目丢进webapp,通过项目名称可以直接访问项目,不需要更改任何配置文件
2.把tomcat首页更改为项目首页
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="daip" reloadable="false" allowLinking="true" redirectPort="localhost2"></Context>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
3.相同域名地址,不同的端口,访问相同的页面
复制代码
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8099" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
 
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="metabase" reloadable="false" allowLinking="true"></Context>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
</Engine>
</Service>
复制代码
4.更改域名地址,对tomcat的host容器(即虚拟主机的配置)进行配置:
更改:hosts文件;具体的文件地址在C:\Windows\System32\drivers\etc文件夹下,并且需要使用管理员身份打开。
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
127.0.0.1 localhost2

原理:无论是localhost还是自己配置的host虚拟主机名(如我自己配置的ui),在浏览器看来都是一个域名,那么域名都是需要进行DNS解析的。但是我们自己配置的域名在DNS服务器是没有的,因为我们没有注册,因此虽然我们在tomcat中进行了配置,但在网络上是没有我们的域名的。我们需要在本地进行配置,而hosts文件正是起到了这样的作用。当用户在浏览器中输入一个URL地址时,系统会首先自动从Hosts文件中寻找对应的域名映射的IP地址,一旦找到,浏览器会立即向该ip地址发送http请求报文。如果没有找到,则浏览器会向本地DNS服务器请求IP地址解析(如果本地DNS服务器无法解析,则会向根DNS服务器请求.....具体的DNS解析就不多说了总之DNS解析是一个递归的过程)。如果我们在本地没有对hosts进行配置,当然网络上也不会有我们的域名,于是浏览器只能提示域名解析错误了。当我们在本地进行配置后,浏览器就可以访问啦!只不过浏览器会在地址栏提示域名重定向。

复制代码
<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="localhost2">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
 
<Host name="localhost2" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="metabase" reloadable="false" allowLinking="true"></Context>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
 
</Host>
</Engine>
</Service>
复制代码

5.不同的域名,相同端口,访问相同页面

复制代码
<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">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
 
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="metabase" reloadable="false" allowLinking="true"></Context>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
</Engine>
<Engine name="Catalina" defaultHost="test">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
 
<Host name="test" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="metabase" reloadable="false" allowLinking="true"></Context>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
</Engine>
</Service>
复制代码

 

6.不同域名,相同端口,访问不同页面(登录项目:404跨源请求)
复制代码
<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">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="metabase" reloadable="false" allowLinking="true"></Context>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
<Host name="test" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="daip" reloadable="false" allowLinking="true"></Context>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
</Engine>
</Service>
复制代码

7.不同的ip地址,不同的端口,不同的页面  

验证结论:无论怎么更改项目的访问路径,直接根据项目名称跑项目都可以跑成功(metabase除外)
 
 
 
声明:此博客为个人学习之用,如与其他作品雷同,纯属巧合,转载请指明出处!
 
 
posted on   Hi,ZHF  阅读(310)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示