其实这个问题分为两个子问题来解决:
1.如何实现单IP多tomcat站点
2.对于多域名的多个站点如何通过nginx分发访问
问题一:解决方案又分为两种:
a.单实例tomcat配置多个host站点
这种方法有一个缺点就是无法分站点调试,如果一个站点出了问题,关服务进行调试会停掉所有站点(不过这个方案就不会涉及到第二个问题,因为这样单实例无法实现多个站点对应多个顶级域名)
b.多实例tomcat配置实现单机多站点
b.多实例tomcat配置实现单机多站点
这个方法很简单,就相当于把tomcat拷贝多份,然后修改各个tomcat的server.xml中的shutdown,http以及AJP1.3的端口,然后将tomcat实例启动即可。不过这个对内存要求比较高,因为每个tomcat跑起来之后可能会占200M左右内存,这还是对并发量比较小的,如果实例数一多起来,比如我们现在有个项目需要20多个站点放在一台服务器上(主要是贪腐无处不在,钱有但是不给你买硬件。。无力吐槽。。。。),这样4G多的内存就吃掉了。
另外一点就是通过多实例配置多站点会有另外一个问题,可能每一个站点都有一个单独的顶级域名,而域名的解析止于IP,因此端口的映射需要自己另做,这就涉及到了第二个问题如何解决了。
具体如何配置多实例实现单机多站点,可以参照下面几个链接:
http://weihaoma.cn/archives/67
http://www.ff-bb.cn/logs/109466274.html
上面我说到可能会有内存溢出的问题,可以看看第二个链接中的解决方案,直接修改tomcat的内存参数,如果是linux直接修改catalina.sh即可,如果是windows的话需要修改注册表中Java的参数:HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\tomcat6.0\Parameters\Java
总体来讲问题一比较好解决,原理上很简单,单个实例无法调试就用多个实例,多个实例需要多个端口,当内存不足时修改它的启动参数,然后重启就行了。
问题二:这里我只说用nginx怎么解决,网上有人apache貌似也能解决,我没有弄成功
nginx是俄罗斯人写的一个开源的web服务器,国内的使用先驱是淘宝,而且貌似他们的工程师在写一本叫《nginx从入门到精通》的书。nginx是一个非常优秀的web服务器,可以说前途一片光明。
一般nginx现在多用户做负载均衡,配合tomcat或者apache做分发,网上这个讲的也很多,但是我要解决的问题不太相同,怎么样通过域名解析到不同端口,这得先说以下nginx的配置文件。
nginx配置文件位于conf/nginx.conf,它最主要的部分是http部分,这里最重要的两个配置项是upstream,server,这两个项都可以有多个配置。
http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream www.aaa.com { server 124.205.16.69:8090; } upstream www.bbb.com { server 124.205.16.69:8100; } server { listen 80; server_name www.aaa.com; location / { index index.html index.jsp; proxy_pass http://www.aaa.com; proxy_set_header X-Real-IP $remote_addr; client_max_body_size 100m; } } server { listen 80; server_name www.bbb.com; location / { index index.html index.jsp; proxy_pass http://www.bbb.com; proxy_set_header X-Real-IP $remote_addr; client_max_body_size 100m; } }}
DNS服务器将域名解析到IP地址,nginx作为反向代理收到请求之后根据配置文件将请求发送到对应的tomcat实例。
我测试时nginx反向代理放在我本机上,tomcat实例在同一台远程服务器,在hosts文件中虚拟两个域名假设为两实例中的站点的域名。
我已经测试过,这个方案是可行的,参考链接如下:
http://saiyaren.iteye.com/blog/1405728
http://yangzb.iteye.com/blog/560421
相关推荐
Nginx+tomcat+redis软负载均衡需要的一整套资源,还包括了JDK,依赖包等文件
ubuntu+nginx+tomcat 实现负载匀衡
Nginx+keepalived+tomcat实现性负载均衡
Nginx+tomcat配置集群负载均衡实现动静分离实例
自己做的一个nginx+tomcat+redis完成session共享小例子,包括所需jar,适合初学者,希望大家一起学习交流
包含的jar包如下: commons-pool2-2.0.jar jedis-2.5.2.jar tomcat-juli-adapters.jar tomcat-juli.jar tomcat-redis-session-manager1.2.jar
Nginx+tomcat 实现负载均衡session共享demo,和http://blog.csdn.net/u014513883/article/details/48550709 类似
详细说明了windows服务器nginx+tomcat+mysql部署及配置(配置阿里云后台安全组,配置域名)很适合新手学习 附件中包含: 1.操作说明文档 2.操作录屏 3.安装所用到的软件安装包 1)Windows Server 2019 数据中心版 ...
Nginx+Tomcat+Memcached实现tomcat集群和session共享 nginx配置
redis缓存服务器Nginx+Tomcat+redis+MySQL实现session会话共享
Nginx+Tomcat+Redis实现负载均衡过程中session所需架包
Nginx+KeepAlived+Tomcat负载架构 这个可以实现tomcat集群,并且可以使服务器主备机进行切换。如果其中一台机器当机,会自动切换到另一台机器。客服端感受不到服务器当掉。非常实用。
keepalived+nginx+tomcat+redis+mysql所需的jdk包,之前csdn不让上传超过200m得只能分开上传。
nginx+tomcat实现负载均衡,共享session的两种方式: 1.使用Redis共享session 2.使用tomcat的组播功能。
详解实现Nginx+Tomcat实现单IP、多域名、多站点的访问 前言: 最近帮朋友做了两个网站,预算很小很小.小到两个网站只能跑在一台512M内存的公网服务器上(tomcat+MySQL,由于内存太小了,只能把两个网站部署在同一个...
基于tomcat7版本的memcached会话保持,内置tomcat需要的jar包。
基于nginx+tomcat+memcache的负载均衡架构
linux下Nginx+tomcat整合的安装与配置
nginx+tomcat7+memcached所需jar.zipnginx+tomcat7+memcached所需jar.zipnginx+tomcat7+memcached所需jar.zipnginx+tomcat7+memcached所需jar.zip