nginx+tomcat集群负载均衡中的多虚拟主机配置

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
.cn 域名,1个 12个月
简介:

虽然夜深了,但是还是解决了这个困扰我一个晚上的问题,记录下来备查。

接着我前不久写的这一篇来的:Linux下nginx和tomcat的整合http://hi.baidu.com/gnaiqeh/blog/item/2f43dac9e98d781a7f3e6fc7.html

举个例子,现在是这样的情况:我现在有a、b、c三个不同的应用,每个Tomcat集群机(一共3个)上都建立了这三个应用的虚拟主机,我要把这三个应用用一个nginx来负载均衡。

中间测试了很多次,失败的过程就不多说了,直接说最终解决的办法。

首先要把3个虚拟主机的域名(a.gnaiqeh.cn、b.gnaiqeh.cn、c.gnaiqeh.cn)都指向到nginx机的公网ip上。

然后还是修改nginx的配置文件nginx.conf:

配置文件中upstream段还是保持不变,依旧是3个tomcat集群机的地址及负载因子:

    upstream gnaiqeh {
      server 192.168.0.11:8080 weight=1;
      server 192.168.0.12:8080 weight=1;
      server 192.168.0.13:8080 weight=1;
    }

 

因为有3个应用,所以应该有3个server段,这里只写其中一个,其他两个只需要修改一下server_name即可:

    server {
        listen       80;
        server_name a.gnaiqeh.cn; #另外两个是b.gnaiqeh.cn、c.gnaiqeh.cn
        location / {
            root   html;
            index index.jsp index.html index.htm;
            proxy_redirect off;
            proxy_set_header Host $host; #这一句至关重要
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://gnaiqeh;
        }
        error_page   500 502 503 504 /50x.html;
        location = /50x.html {
            root   html;
        }
    }

 

proxy_set_header是nginx的http代理模块中的一个指令。

在nginx中的默认proxy是只能对后面real server做端口转发的,而不能做域名转发,即默认的是:

proxy_set_header Host $proxy_host;

 

我们要通过域名转发就必须改为:

proxy_set_header Host $host;

 

最后修改tomcat的配置文件server.xml,主要是配置虚拟主机:

       < Host  name ="a.gnaiqeh.cn"  appBase ="webapps-a"
            unpackWARs
="true"  autoDeploy ="true"
            xmlValidation
="false"  xmlNamespaceAware ="false" >
         < Context  path =""  docBase ="/mnt/a"  reloadable ="true"  crossContext ="true" />
       </ Host >
       < Host  name ="b.gnaiqeh.cn"  appBase ="webapps-b"
            unpackWARs
="true"  autoDeploy ="true"
            xmlValidation
="false"  xmlNamespaceAware ="false" >
         < Context  path =""  docBase ="/mnt/b"  reloadable ="true"  crossContext ="true" />
       </ Host >
       < Host  name ="c.gnaiqeh.cn"  appBase ="webapps-c"
            unpackWARs
="true"  autoDeploy ="true"
            xmlValidation
="false"  xmlNamespaceAware ="false" >
         < Context  path =""  docBase ="/mnt/c"  reloadable ="true"  crossContext ="true" />
       </ Host >

 

3台集群机均改成上面一样的。

然后重启nginx,重启tomcat,测试访问三个域名都通过,打完收工。

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
1月前
|
弹性计算 负载均衡 网络协议
配置SLB监听器
配置SLB监听器
144 63
|
1月前
|
域名解析 弹性计算 监控
slb测试基本配置检查
slb测试基本配置检查
109 60
|
1月前
|
弹性计算 负载均衡 网络协议
ECS中实现nginx4层7层负载均衡和ALB/NLB原SLB负载均衡
通过本文的介绍,希望您能深入理解并掌握如何在ECS中实现Nginx四层和七层负载均衡,以及如何使用ALB和NLB进行高效的负载均衡配置,以提高系统的性能和可靠性。
151 9
|
1月前
|
弹性计算 负载均衡 监控
slb配置健康检查
slb配置健康检查
45 5
|
1月前
|
弹性计算 负载均衡 网络协议
slb设置虚拟主机
slb设置虚拟主机
52 8
|
1月前
|
负载均衡 算法 应用服务中间件
Nginx的负载均衡
Nginx 是一款高性能的Web服务器与反向代理服务器,支持负载均衡功能,能有效提升系统性能与可靠性。其负载均衡策略包括基于轮询和权重的分配方法,以及IP哈希、最小连接数等算法,可根据实际需求灵活选择。
152 5
|
1月前
|
监控 负载均衡 容灾
slb测试配置
slb测试配置
42 5
|
1月前
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
114 3
|
2月前
|
域名解析 监控 负载均衡
slb部署虚拟主机(Virtual Hosts)
slb部署虚拟主机(Virtual Hosts)
53 5
|
2月前
|
域名解析 监控 安全
slb配置检查域名说明注意事项
slb配置检查域名说明注意事项
54 5