开发者社区> 杨粼波> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介:
+关注继续查看

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

接着我前不久写的这一篇来的: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,测试访问三个域名都通过,打完收工。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
nginx负载均衡配置
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengyi_L/article/details/82221490 原理:ng...
2000 0
nginx负载均衡及配置
nginx负载均衡及配置 1 负载均衡概述 负载均衡由来是因为当一台服务器单位时间内的访问量很大时,此时服务器的压力也会 验,就诞生了负载均衡来分担服务器压力.
1256 0
nginx 负载均衡配置
        企业在解决高并发问题时,一般有两个方向的处理策略,软件、硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库+web服务器两处添加解决方案,其中web服务器前面一层最常用的的添加负载方案就是使用nginx实现负载均衡。
1107 0
nginx 负载均衡 配置
 jar 下载:http://download.csdn.net/download/knight_black_bob/9456377   1.下载 gz.tar    nginx-1.
656 0
Nginx极简入门(六)配置Nginx负载均衡,提高系统并发性能!
前面讲了如何配置Nginx虚拟主机、如何配置反向代理。Nginx最主要的功能就是反向代理和负载均衡。今天要说的是如何配置nginx和tomcat实现反向代理。
562 0
Nginx-负载均衡-server参数
章节目录 后端服务器在负载均衡调度中的状态 backup 状态演示 后端服务器在负载均衡调度中的状态 参数 含义 down 当前的server暂时不参与负载均衡 backup 预留的备份服务器 max_fails 允许请求失败的次...
817 0
+关注
杨粼波
网游的老兵
1151
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载