最近和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"> <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"> <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"> <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!

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

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

    一.TOMCAT 1 - Tomcat Server的组成部分 <Server>     <Service>         <Connector/>        ...

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

    //配置多个IP命名using System.Net; //********************************************************************** ...

  3. c#中HttpWebRequest使用Proxy实现指定IP的域名请求

    原文:http://www.cnblogs.com/greenerycn/archive/2010/04/11/httpwebreques_host_modify_By_set_proxy.html ...

  4. TOMCAT原理详解及请求过程

    Tomcat: Tomcat是一个JSP/Servlet容器.其作为Servlet容器,有三种工作模式:独立的Servlet容器.进程内的Servlet容器和进程外的Servlet容器. Tomcat ...

  5. 网站开发进阶(四)Tomcat Server处理一个http请求的过程

    Tomcat Server处理一个http请求的过程 假设来自客户的请求为: http://localhost:8080/wsota/wsota_index.jsp 1) 请求被发送到本机端口8080 ...

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

    转自https://www.cnblogs.com/hggen/p/6264475.html TOMCAT原理详解及请求过程 Tomcat: Tomcat是一个JSP/Servlet容器.其作为Ser ...

  7. Tomcat Server处理一个http请求的过程

    Tomcat Server处理一个http请求的过程 假设来自客户的请求为: http://localhost:8080/wsota/wsota_index.jsp 1) 请求被发送到本机端口8080 ...

  8. WEB安全:Tomcat 只可通过域名访问,禁止通过 IP 访问

    服务器为什么要禁止通过IP直接访问? 1.若公布于外网的服务器IP地址未备案,就有可能被工信部查封.这样备案的域名也会无法访问. 2.如果AppScan通过ip访问扫描,会有“发现内部ip泄露模式”的 ...

  9. nginx+tomcat把带WWW域名自动跳转到不带www域名方法

    nginx+tomcat把带WWW域名自动跳转到不带www域名方法在nginx.conf里面 include /etc/nginx/conf.d/*.conf;在应该server里增加: if ($h ...

随机推荐

  1. scrapy之小试身手

    要爬取的网址是:http://quotes.toscrape.com/ 磕磕绊绊的写完了 spiders import scrapy from kkk.items import * class Quo ...

  2. 同余方程(codevs 1200)

    题目描述 Description 求关于 x 同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入描述 Input Description 输入只有一行,包含两个正整数 a, b,用 一个 空 ...

  3. wpf LookUpEdit PopupContentTemplate

    <dxg:LookUpEdit Name="searchLookUpEdit" HorizontalAlignment="Stretch" PopupHe ...

  4. jQuery设置 select、radio、checkbox 默认选中的值

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. toUpperCase与toLowerCase

    public String toLowerCase()此方法返回的字符串转换为小写. public String toUpperCase()此方法返回的字符串转换为大写. 注:支队英文字符有效,其他字 ...

  6. 牛客网 牛客练习赛11 D.求距离

    D.求距离 链接:https://www.nowcoder.com/acm/contest/59/D来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32768K,其他语言6 ...

  7. socket的accept: Invalid argument问题

    void local_sdk_server::wait_remote_client_connect_and_comm() { /*服务器服务启动,等待客户端的链接的到来*/ //sockaddr_in ...

  8. HDU 3534 Tree (经典树形dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3534 题意: 给你一棵树,问你有多少对点的距离等于树的直径. 思路: dp[i][0]表示在i的子树中 ...

  9. AngularJS中使用Directive、Controller、Service

    AngularJS是一款非常强大的前端MVC框架.同时,它也引入了相当多的概念,这些概念我们可能不是太熟悉. (1)Directive 指令 (2)Controller 控制器 (3)Service ...

  10. PyTorch框架+Python 3面向对象编程学习笔记

    一.CNN情感分类中的面向对象部分 sparse.py super(Embedding, self).__init__() 表示需要父类初始化,即要运行父类的_init_(),如果没有这个,则要自定义 ...