其实这个问题分为两个子问题来解决:
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实现单IP、多域名、多站点的访问 前言: 最近帮朋友做了两个网站,预算很小很小.小到两个网站只能跑在一台512M内存的公网服务器上(tomcat+MySQL,由于内存太小了,只能把两个网站部署在同一个...
### Nginx与Tomcat实现负载均衡的知识点详解 #### Nginx简介及特性 Nginx是一款由Igor Sysoev开发的高性能HTTP服务器和反向代理服务器,以其出色的稳定性和低系统资源消耗而著称。最初是为俄罗斯访问量排名第二的...
Nginx+Tomcat多站点部署是一种将Nginx作为反向代理服务器与Tomcat服务器结合,实现多个网站域名指向同一台服务器上不同应用部署的方法。这种架构设计主要利用了Nginx的高性能反向代理功能以及Tomcat作为应用服务器的...
- 在浏览器中输入你的域名或 IP 地址进行访问,验证是否成功部署了 Vue.js 项目。 #### 四、总结 Nginx 是一款非常优秀的 Web 服务器,它不仅适合处理高并发请求,还能有效地支持各种 Web 应用程序的部署。对于...
一个服务器上搭建了多个tomcat或者weblogic,端口不一样,同时启动访问时session丢失。如:A,B两个服务,在浏览器中登录访问A后,当前打开的浏览器上在开一个选项卡访问B服务后,回过来点击访问A时session丢失,...
- **负载均衡**:通过分配请求到多个服务器,实现高并发和故障转移,提高服务可用性。 - **静态资源服务器**:高效地处理静态内容(如图片、CSS、JavaScript),比其他应用服务器(如 Tomcat)更快。 - **反向...
2. **虚拟主机**:通过 server 块配置,Nginx 可以支持多个域名和端口,实现不同站点的独立管理。 3. **URL 转发**:利用 location 指令,可以设置 URL 路由规则,将特定路径的请求转发到不同的服务或文件。 **四、...
Nginx 支持多站点配置,通过配置多个 server 块来区分不同的域名。 - **配置示例**: ```nginx server { listen 80; server_name example.com; root /var/www/example.com; ... } server { listen 80; ...
总之,多域名绑定和Tomcat多项目绑定是服务器管理和Web应用部署的关键技术,它们能够有效地提高资源利用率,提供灵活的站点管理方式。通过合理配置和深入学习,可以更好地服务于复杂的互联网环境。
实战线上Nginx多站点配置 在生产环境中,一个Nginx实例通常会配置多个虚拟主机,以支持多个不同的网站。 **多站点配置步骤:** 1. **创建多个server块:** 每个server块对应一个虚拟主机,需要配置不同的域名和...
【虚拟主机配置】是Nginx的一个重要功能,它允许在一个物理服务器上托管多个独立的网站,每个网站对应不同的域名或IP。通过配置server块,我们可以设定不同站点的根目录、访问控制和重定向规则。 【Location匹配...
3. **负载均衡**:Nginx可以实现基于轮询、权重、IP哈希等多种策略的负载均衡,确保请求均匀分布到多台后端服务器。 4. **静态文件处理**:Nginx对于静态资源(如图片、CSS、JavaScript文件)的处理非常高效,可以...
多实例配置允许在同一物理服务器上运行多个Tomcat服务,每个实例可以关联不同的虚拟主机(域名),实现多个站点的独立部署。 具体实践步骤包括: - 将Tomcat安装包解压至指定目录,并复制多个实例所需文件。 - 修改...
- **多站点部署**:在一个Nginx实例上,通过`location`和`proxy_pass`的不同组合,可以托管多个独立的Web应用。 5. **注意事项**: - 当`proxy_pass`后面跟着一个URL时,`rewrite`规则将在proxy_pass之前执行。...
配置Nginx时,你需要在`nginx.conf`或相应的站点配置文件中设置以下内容: ```nginx server { listen 80; server_name localhost; # 或者你的域名 location / { root /path/to/your/frontend/dist; # 前端打包...
- **虚拟主机**:通过`server_name`配置多个域名,实现多站点托管。 - **静态资源缓存**:配置Nginx缓存静态文件,提高响应速度。 - **安全设置**:启用HTTPS,配置SSL证书,提升网站安全性。 - **限速与限制**:...