http://nickandmiles.blog.163.com/blog/static/23422123201110151492166/

条件是:这样一种实际情况是,就一台服务器,当公网的IP地址也只有一个。
 
应用是:不同的域名访问后访问相对应的不同的程序。
 
举个例子来说如下:
 
有一个域名叫www.yuming.com
 
另一个一名叫bbs.yuming.com
 
曾经想过部署多个tomcat,然后用不同的端口来对应不用的域名。这样是很不好的,不可能指望用户去记住输入端口号(不是默认的80)。
 
例如:www.yuming.com,              bbs.yuming.com:8080/
 
还有就是在一个tomcat下面部署多个应用,然后通过域名+应用名的方式访问,也不好,不够简洁。
 
例如:www.yuming.com/    (只能隐藏一个工程名)          bbs.yuming.com/bbs或www.yuming.com/bbs
 
以上两种方式虽然都做到了形似不同的域名访问了不同应用,但实际效果还是很不好的,我就想输入www.yuming.com或bbs.yuming.com就能访问了。还有就是想过用跳转的方式等等实现都不是很好。
 
刚刚试了一下原来是有其他方法的,以前没注意过,愚昧了。呵呵。
 
方法是基本只需修改server.xml即可,步骤如下:
 
在tomcat的conf/server.xml里面找到如下信息
 
<Host name="localhost" appBase="webapps"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">
 
 
 
将上面的代码复制,加到此代码前面,并加上标签结束符号,如下:
 
<Host name="localhost" appBase="webapps"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">
 
</Host>
 
<Host name="localhost" appBase="webapps"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">
 
修改上面Host标签name属性值,将localhost改为bbs.yuming.com;修改下面Host标签name属性值,将localhost改为www.yuming.com,修改后如下:
 
<Host name="bbs.yuming.com" appBase="webapps"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">
 
</Host>
 
<Host name="www.yuming.com" appBase="webapps"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">
 
在tomcat目录下新建一个叫webapps2的文件夹,将bbs.yuming.com对应的那个Host标签appBase属性值为webapps2,修改后如下:
 
<Host name="bbs.yuming.com" appBase="webapps2"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">
 
</Host>
 
<Host name="www.yuming.com" appBase="webapps"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">
 
如 此,我们已经做到了不同的域名只能访问自己对应的那个项目目录了。当然这样还没有完,在webapps或webapps2下面是能发布项目了,但现在还是 需要输入域名+项目名。下面再做一下处理,将工程名为test的项目拷贝到webapps下,将testbbs项目拷贝到webapps2下,在Host 标签内各增加一个Context上下文标签,修改后如下:
 
<Host name="bbs.yuming.com" appBase="webapps2"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="test" reloadable="true">
</Context>
</Host>      
<Host name="www.yuming.com" appBase="webapps"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="testbbs" reloadable="true">
</Context>
 
这样做启动tomcat会发现,每个项目被发布了两遍。一遍是带工程名的,一遍是不带工程名的。要只发布一次的话,就将项目放在webapps和webapps2文件夹外的任意目录。通过配置指向发布,如下:
 
例如放在D:\project\test和D:\project\testbbs,最终修改配置后如下:
 
<Host name="bbs.yuming.com" appBase="webapps2"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="D:\\project\\test" reloadable="true">
</Context>
</Host>      
<Host name="www.yuming.com" appBase="webapps"
       unpackWARs="true" autoDeploy="true"
       xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="D:\\project\\testbbs" reloadable="true">
</Context>
 
重新启动tomcat即可。如果想测试看看效果的话,可以在配置本地的hosts例如:
 
打开C:\WINDOWS\system32\drivers\etc\hosts  ,编辑如下:
 
127.0.0.1       localhost
192.168.1.11 bbs.yuming.com
192.168.1.11 www.yuming.com
 
好了,在浏览器里面输入www.yuming.com或bbs.yuming.com就能访问各自的工程了。
 
That's all!

一个Tomcat及一个ip,绑定不同的域名,各个域名访问各自不同应用程序的配置方法的更多相关文章

  1. nginx和tomcat访问图片和静态页面的配置方法

    生产环境下,有时候需要访问图片,正常需要应用ftp.nginx等配套使用,但是有时候为了简化,可以用以下的两种简单的访问,说实话,就是为了偷懒,但是效果是能有的,这就行了,所以今天做这个简化版的方便大 ...

  2. 一个tomcat服务器上部署多个Web项目,不同域名访问

    [参考]一个tomcat服务器上部署多个项目,不同域名访问 我们一个服务器只按装了一个tomcat服务器,现在有多个项目或者多个域名访问,下面来进行配置 在这里我们只需要修改conf下的server. ...

  3. 一个tomcat部署多个应用实例总结

    项目组有好几个项目需要运行,之前项目少,一个tomcat对应一个项目还能应付,但现在项目多了,要是再一个tomcat对应一个项目的话,一方面看起来很业余,一方面也加大服务器的维护难度.所以现在需要对t ...

  4. 如何配置nginx负载均衡配置(轮询,权重,ip绑定)

    集群是为了解决单节点无法服务高并发的情况,在集群中nginx是如何分配将来自客户端的请求 转发给服务器的 负载均衡可以提高网站的吞吐量(接受和响应),减轻单台服务器的压力 负载均衡提供了三种策略:轮询 ...

  5. 配置Nginx支持SSL SNI(一个IP绑定多个证书) 以及Haproxy实现多域名证书

    概述 传统的每个SSL证书签发,每个证书都需要独立ip,假如你编译openssl和nginx时候开启TLS SNI (Server Name Identification) 支持,这样你可以安装多个S ...

  6. Nginx反代,后端一个IP绑定多个SSL证书,导致连接失败之解决方法:HTTPS和SNI扩展

    默认:SSL协议进行握手协商进行连接的时候,默认是不会发送主机名的,也就是是以IP的形式来进行https连接握手协商的,这就导致一个问题,当一台服务器上有多个虚拟主机使用同一个IP的时候, Nginx ...

  7. Tomcat之如何自己做一个tomcat

    来源:<How Tomcat Works> Servlet容器的工作原理: 1.创建一个request对象并填充那些有可能被所引用的servlet使用的信息,比如参数.头部.cookies ...

  8. 通过一个tomcat端口访问多个tomcat项目 tomcat转发

    需求是这样的,有一个tomcat,是80端口,现在我要通过这个tomcat转发到服务器其他tomcat,其他tomcat的端口不是80.这样做就可以避免这样www.baidu.com:8081的情况. ...

  9. tomcat实现多端口、多域名访问(只针对一个tomcat)

    说明:这个部分介绍如何在tomcat中进行配置,使同一个应用可以通过不同的端口号进行访问. 在某些需要进行安全控制的场景中会应用到.例如:不同地址段只能通过某个端口访问. 2 找到tomcat的主目录 ...

随机推荐

  1. MySQL使用指南(上)

    作者:大金刚   有很多朋友虽然安装好了mysql但却不知如何使用它.在这篇文章中我们就从连接MYSQL.修改密码.增加用户等方面来学习一些MYSQL的常用命令. 一.连接MYSQL. 格式: mys ...

  2. O-C相关04:类方法的概述与定义和调用

    类方法的概述与定义和调用 1, 类方法的概述 类方法(class method)在其他编程语言中常常称为静态方法(例如 Java 或 C# 等). 与实例方法不同的是,类方法只需要使用类名即可调用, ...

  3. c#数组的交集,差集,并集

    , , , , }; , , , , }; // 差集 var z1 = x.Except(y); foreach (var i in z1) { Console.Write(i + " & ...

  4. CSS3实用方法小记 2016.03.16

    圆角边框: border-radius : 4px; box阴影: box-shadow : 5px 5px 3px #000 ; /* 参数分别为向右拓展距离,向下拓展距离,阴影宽度,颜色*/ 背景 ...

  5. mysql 链接数据库

    一.MySQL 连接本地数据库,用户名为“root”,密码“root”(注意:“-p”和“root” 之间不能有空格) C:\>mysql -h localhost -u root -proot ...

  6. 虚拟机固定IP访问外网配置

    大家都知道虚拟机网络连接有三种模式,桥接,host-only,NAT,不再赘述. 这里说一下桥接模式下,实现主机与虚拟机通讯,虚拟机与虚拟机通信,虚拟机访问外网,废话不多说,直接说解决方案: 1.本地 ...

  7. 在Windows下用MingW 4.5.2编译OpenCV 2.3.0

    需要的工具:1.安装QT SDK环境2.安装CMake for Windows3.OpenCV最新Windows源码步骤:1.将QT SDK安装目录下的{QtSDK}\mingw\bin添加到系统环境 ...

  8. mysql备份和恢复

    摘自:http://safe.it168.com/a2009/1108/805/000000805490.shtml 要备份数据库" phpbb_db_backup " #mysq ...

  9. 【python】由一个小例子看出python的灵活性,IF ELSE一例

    temp = input("请输入1到100之间的数字:") num = int(temp) if 1 <= num <= 100:                   ...

  10. Windows下配置g++的简单方法

    需要下载名为 Cygnus的软件.下载地址: http://www.claremontmckenna.edu/math/ALee/g++/full.exe 安装完成后配好环境变量就可以用gcc, g+ ...