一套Tomcat处理多个域名请求 - Virtual Host

最近和Tomcat较上劲了。。。

作为Tomcat的系列之一,来尝试下如何用一套Tomcat来处理多个域名请求。

场景:基于成本考虑,多个department共用一台服务器,然后该服务器上就一套Tomcat。各个department有各自的域名,这样就需要配置Tomcat的虚拟主机来解决。

1. 修改hosts文件

2. 修改server.xml文件

3. 为每个department创建webapps目录

详细细节

1. 修改hosts文件

据自己目前的网络知识,像我们平时上网,当发出www.baidu.com的请求时,该域名会被www的DNS解析成对应的IP,之后就能定位到baidu的主机,进而建立连接进行访问。

如果真有类似“一套Tomcat来处理多个域名请求”的需求,那么首先应该保证各个域名会被解析成同一个IP。

在这里,为代替DNS的域名解析,暂时修改hosts文件,用来处理各个department的域名。

hosts文件位置:

Windows 7 x64: C:\Windows\System32\drivers\etc

Linux CentOS 7: /etc

假设两个域名:www.tomcatvirtualhost1.com ; www.tomcatvirtualhost2.com

在hosts文件中增加以下内容,Tomcat Server IP 为真实的IP.

Tomcat Server IP www.tomcatvirtualhost1.com
Tomcat Server IP www.tomcatvirtualhost2.com

2. 修改server.xml文件

修改tomcat中conf下的server.xml文件(使用apache-tomcat-8.5.4)。

在server.xml文件中,有以下默认的<Host>。 name="localhost" appBase="webapps"。name对应域名,appBase对应tomcat下的应用文件夹。

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <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和appBase

      <Host name="www.tomcatvirtualhost1.com"  appBase="department1"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <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="www.tomcatvirtualhost2.com"  appBase="department2"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <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. 为每个department创建webapps目录

既然server.xml文件中已经增加了2个appBase,所以在tomcat目录下相应创建文件夹 department1 和 department2。为简化,可以复制webapps。

4. 测试

启动Tomcat,浏览器键入www.tomcatvirtualhost1.com:8080,这将访问department1;浏览器键入www.tomcatvirtualhost2.com:8080,这将访问department2。

POST: 后续研究下怎么把端口号也去掉(修改默认端口的方式感觉不好),看着别扭。。。

Done!

时间: 2024-08-08 13:47:31

一套Tomcat处理多个域名请求 - Virtual Host的相关文章

[转]TOMCAT原理以及处理HTTP请求的过程、ContextPath ServletPath

一.TOMCAT 1 - Tomcat Server的组成部分 <Server> <Service> <Connector/> <Engine> <Host> <Context> </Context> </Host> </Engine> </Service> </Server> 1.1 - Server A Server element represents the enti

一个服务器上面配置多个IP ,实现指定IP的域名请求

//配置多个IP命名using System.Net; //*************************************************************************** /// <summary> /// 通过设置这个属性,可以在发出连接的时候绑定客户端发出连接所使用的IP地址. /// </summary> /// <param name="servicePoint"></param> ///

理解互联网域名请求实现过程,以及Nodejs的http请求小谈

前提:在学习开发互联网网站程序前,需要了解知道一个客户端请求,如何能展现成一个炫丽的网页的. 一.域名请求实现 这幅图足以说明一个域名请求的过程了吧 二.服务器端的处理(Nodejs示例) 直接上nodejs代码 1 var http = require('http'); 2 3 http.createServer(function(req, res) { 4 if (req.method === 'GET') { 5 var html; 6 switch (req.url) { 7 case

Tomcat Server处理一个HTTP请求的过程(转)

Tomcat Server处理一个HTTP请求的过程 1.用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得. 2.Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应. 3.Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host. 4.Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被

TOMCAT原理详解及请求过程

Tomcat: Tomcat是一个JSP/Servlet容器.其作为Servlet容器,有三种工作模式:独立的Servlet容器.进程内的Servlet容器和进程外的Servlet容器. Tomcat目录: tomcat |---bin:存放启动和关闭tomcat脚本 |---conf:存放不同的配置文件(server.xml和web.xml): |---doc:存放Tomcat文档: |---lib/japser/common:存放Tomcat运行需要的库文件(JARS): |---logs:

TOMCAT原理详解及请求过程(转)

https://www.cnblogs.com/hggen/p/6264475.html TOMCAT原理详解及请求过程 Tomcat: Tomcat是一个JSP/Servlet容器.其作为Servlet容器,有三种工作模式:独立的Servlet容器.进程内的Servlet容器和进程外的Servlet容器. Tomcat目录: tomcat |---bin:存放启动和关闭tomcat脚本 |---conf:存放不同的配置文件(server.xml和web.xml): |---doc:存放Tomc

[转]Apache+Tomcat 同一IP多域名多网站配置

最近帮人用Apache+Tomcat在同一台IP的服务器上设置多域名指向不同网站站点,花费了不少的时间.尤其是配置信息的时候,从网上找的资料有很多是错误的,误认不浅.所以今天特意把它记下来,以备后面使用. 首先说一下我的需求是这样:apache作为前端分发器,把域名解析的内容转发到后台的Tomcat上去,tomcat也只有一个,但拥有2个不同的实例.就是分别是2个不同的网站.不要根据不同域名转向tomcat后台不同的网站上去. 现在开始讲讲配置流程: 1.进入apache的htpd.conf中配

绑定域名到tomcat项目实现由域名直接访问到项目首页

转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6383996.html 一:购买域名 请移步到相关网站购买域名,我是在腾讯云买的.购买后记得实名认证,不然解析不了. 二:解析域名 大约七八分钟后,测试是否解析成功. 打开cmd,用ping命令连接你的域名,如图: 如上图,说明解析成功了,我的域名已经解析为我的云主机IP了. 三:配置tomcat 用Putty登录云服务器,cd到tomcat文件夹的conf目录,打开server.xml. vi server

Tomcat学习(一) - Tomcat结构以及处理一个请求的过程

1. Tomcat结构 Tomcat是一个基于组件的服务器,它的构成组件都是可配置的,其中最外层的 组件是Catalina Servlet容器,其他的组件按照一定的格式要求配置在这个顶层容器中.Tomcat的各个组件是在<TOMCAT_HOME>\conf \server.xml文件中配置的,Tomcat服务器默认情况下对各种组件都有默认的实现,下面通过分析server.xml文件来理解Tomcat 的各个组件是如何组织的.server.xml文件的基本组成结构如下. XML配置文件结构 &l