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的主目录 ...
随机推荐
- ios7--系统自带的向右滑动手势返回上一个界面
当从控制器A push到控制器B,我们返回控制器A,除了使用按钮返回 [self.navigationController pushViewController:Vc animated:YES]; 还 ...
- canvas之----浮动小球
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 关于移动div的具体实现(js)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- php 微信支付jsapi
首先你们公司开通微信支付功能后,会收到一份邮件,里面有账户相关信息,一般有:微信支付商户号,商户平台登录帐号,商户平台登录密码,申请对应的公众号,公众号APPID. 1.下载demo:用上面信息登陆& ...
- iPhone分辨率
分辨率和像素 1.iPhone5 4" 分辨率320x568,像素640x1136,@2x 2.iPhone6 4.7" 分辨率3 ...
- 反射 DataTable拓展方法 转实体对象、实体集合、JSON
Mapper类 using System; using System.Collections.Generic; using System.Data; using System.Globalizatio ...
- 关于64位Win7/Win 8 下怎么学习汇编语言
我看有许多同学用Win 7/Win 8 学习汇编,现在好多人的内存升级了都用64位系统了,但是64位W7没有自带的DEBUG和MASM. 1.首先下载DOSBOX,(下面附带地址)它的作用就是让你在6 ...
- LightOj_1284 Lights inside 3D Grid
题目链接 题意: 给一个X * Y * Z 的立方体, 每个单位立方体内都有一盏灯, 初始状态是灭的, 你每次操作如下: 1)选择一个点(x1, y1, z1) 再选择一个点(x2, y2, ...
- Spring 中设置依赖注入
package com.ysq.vo; public class User { private int uid; private String uname; private String pwd; p ...
- Arduino语言学习记录(持续更新)
几天前某宝买了一套,这几天没工夫.今天开始学学这个“玩具”. 1.Arduino的变量数据类型: 数据类型 数据类型 RAM 范围 void keyword N/A N/A boolean 1 by ...