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 "%r" %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 "%r" %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 "%r" %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 "%r" %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 "%r" %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 "%r" %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 "%r" %s %b" /> </Host> </Engine> </Service>
7.不同的ip地址,不同的端口,不同的页面
验证结论:无论怎么更改项目的访问路径,直接根据项目名称跑项目都可以跑成功(metabase除外)
声明:此博客为个人学习之用,如与其他作品雷同,纯属巧合,转载请指明出处!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律