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!
- nginx和tomcat访问图片和静态页面的配置方法
生产环境下,有时候需要访问图片,正常需要应用ftp.nginx等配套使用,但是有时候为了简化,可以用以下的两种简单的访问,说实话,就是为了偷懒,但是效果是能有的,这就行了,所以今天做这个简化版的方便大 ...
- 一个tomcat服务器上部署多个Web项目,不同域名访问
[参考]一个tomcat服务器上部署多个项目,不同域名访问 我们一个服务器只按装了一个tomcat服务器,现在有多个项目或者多个域名访问,下面来进行配置 在这里我们只需要修改conf下的server. ...
- 一个tomcat部署多个应用实例总结
项目组有好几个项目需要运行,之前项目少,一个tomcat对应一个项目还能应付,但现在项目多了,要是再一个tomcat对应一个项目的话,一方面看起来很业余,一方面也加大服务器的维护难度.所以现在需要对t ...
- 如何配置nginx负载均衡配置(轮询,权重,ip绑定)
集群是为了解决单节点无法服务高并发的情况,在集群中nginx是如何分配将来自客户端的请求 转发给服务器的 负载均衡可以提高网站的吞吐量(接受和响应),减轻单台服务器的压力 负载均衡提供了三种策略:轮询 ...
- 配置Nginx支持SSL SNI(一个IP绑定多个证书) 以及Haproxy实现多域名证书
概述 传统的每个SSL证书签发,每个证书都需要独立ip,假如你编译openssl和nginx时候开启TLS SNI (Server Name Identification) 支持,这样你可以安装多个S ...
- Nginx反代,后端一个IP绑定多个SSL证书,导致连接失败之解决方法:HTTPS和SNI扩展
默认:SSL协议进行握手协商进行连接的时候,默认是不会发送主机名的,也就是是以IP的形式来进行https连接握手协商的,这就导致一个问题,当一台服务器上有多个虚拟主机使用同一个IP的时候, Nginx ...
- Tomcat之如何自己做一个tomcat
来源:<How Tomcat Works> Servlet容器的工作原理: 1.创建一个request对象并填充那些有可能被所引用的servlet使用的信息,比如参数.头部.cookies ...
- 通过一个tomcat端口访问多个tomcat项目 tomcat转发
需求是这样的,有一个tomcat,是80端口,现在我要通过这个tomcat转发到服务器其他tomcat,其他tomcat的端口不是80.这样做就可以避免这样www.baidu.com:8081的情况. ...
- tomcat实现多端口、多域名访问(只针对一个tomcat)
说明:这个部分介绍如何在tomcat中进行配置,使同一个应用可以通过不同的端口号进行访问. 在某些需要进行安全控制的场景中会应用到.例如:不同地址段只能通过某个端口访问. 2 找到tomcat的主目录 ...
随机推荐
- MySQL使用指南(上)
作者:大金刚 有很多朋友虽然安装好了mysql但却不知如何使用它.在这篇文章中我们就从连接MYSQL.修改密码.增加用户等方面来学习一些MYSQL的常用命令. 一.连接MYSQL. 格式: mys ...
- O-C相关04:类方法的概述与定义和调用
类方法的概述与定义和调用 1, 类方法的概述 类方法(class method)在其他编程语言中常常称为静态方法(例如 Java 或 C# 等). 与实例方法不同的是,类方法只需要使用类名即可调用, ...
- c#数组的交集,差集,并集
, , , , }; , , , , }; // 差集 var z1 = x.Except(y); foreach (var i in z1) { Console.Write(i + " & ...
- CSS3实用方法小记 2016.03.16
圆角边框: border-radius : 4px; box阴影: box-shadow : 5px 5px 3px #000 ; /* 参数分别为向右拓展距离,向下拓展距离,阴影宽度,颜色*/ 背景 ...
- mysql 链接数据库
一.MySQL 连接本地数据库,用户名为“root”,密码“root”(注意:“-p”和“root” 之间不能有空格) C:\>mysql -h localhost -u root -proot ...
- 虚拟机固定IP访问外网配置
大家都知道虚拟机网络连接有三种模式,桥接,host-only,NAT,不再赘述. 这里说一下桥接模式下,实现主机与虚拟机通讯,虚拟机与虚拟机通信,虚拟机访问外网,废话不多说,直接说解决方案: 1.本地 ...
- 在Windows下用MingW 4.5.2编译OpenCV 2.3.0
需要的工具:1.安装QT SDK环境2.安装CMake for Windows3.OpenCV最新Windows源码步骤:1.将QT SDK安装目录下的{QtSDK}\mingw\bin添加到系统环境 ...
- mysql备份和恢复
摘自:http://safe.it168.com/a2009/1108/805/000000805490.shtml 要备份数据库" phpbb_db_backup " #mysq ...
- 【python】由一个小例子看出python的灵活性,IF ELSE一例
temp = input("请输入1到100之间的数字:") num = int(temp) if 1 <= num <= 100: ...
- Windows下配置g++的简单方法
需要下载名为 Cygnus的软件.下载地址: http://www.claremontmckenna.edu/math/ALee/g++/full.exe 安装完成后配好环境变量就可以用gcc, g+ ...