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

标签: nginx tomcat 集群 | 发表时间:2012-05-01 06:41 | 作者:杨粼波
出处:http://www.cppblog.com/tx7do/
转载自: http://hi.baidu.com/gnaiqeh/blog/item/c8024c11bfeacff2c2ce79f4.html

关键词: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,测试访问三个域名都通过,打完收工。




杨粼波 2012-05-01 06:41 发表评论

相关 [nginx tomcat 集群] 推荐:

Nginx+Tomcat+Memcached共享session集群配置

- ENOCH - ITeye论坛最新讨论
2、memcached共享session. 3、tomcat集群配置(3台CentOS 6). (172.18.188.64): 操作系统CentOS 6; 安装nginx、memcached和tomcat 6. (172.18.188.76): 操作系统CentOS 6; 安装tomcat 6. (172.18.188.78): 操作系统CentOS 6; 安装tomcat 6.

centos下搭建nginx+tomcat实现集群负载与session复制

- - CSDN博客系统运维推荐文章
系统均选用最小化安装的centos 5.7. 客户端通过访问nginx做的负载均衡层去访问后端的web运行层(tomcat),如下图:. 另外,关于session复制原理,简单来说如下图:. 负载层:192.168.254.200. 安装:pcre、nginx、nginx-upstream-jvm-route-0.1.

电子商务网站基础架构 nginx + memcached + tomcat + squid 集群

- - 企业架构 - ITeye博客
本文中 包含 nginx memcached tomcat 集群 的安装和配置. wget url 为下载所需的资源文件方式,也可以通过 VMware Tools 工具载入,. 如何安装 VMwareTools 参考本博客或者其他资料. 后面最后一章节是安装配置squid 在项目第一期不作要求. 第一章 安装配置nginx.

实现基于nginx的tomcat负载均衡和集群配置

- - 互联网 - ITeye博客
今天看到"基于apache的tomcat负载均衡和集群配置 "这篇文章成为javaEye热点. 略看了一下,感觉太复杂,要配置的东西太多,因此在这里写出一种更简洁的方法. 要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务器即可共享SESSION了.

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

- - C++博客-牵着老婆满街逛
关键词:nginx tomcat 多虚拟主机 集群 负载均衡. 虽然夜深了,但是还是解决了这个困扰我一个晚上的问题,记录下来备查. 接着我前不久写的这一篇来的:Linux下nginx和tomcat的整合 http://hi.baidu.com/gnaiqeh/blog/item/2f43dac9e98d781a7f3e6fc7.html.

tomcat集群配置

- - 互联网 - ITeye博客
OS环境:windows XP 32位. 服务器集群会比单机的TPS提高不少,也提高了系统的可用性,避免单机宕机影响整个系统不能运行,所以集群会比单机有众多优点. Apache的安装过程略. mod_jk.so使用的是tomcat-connectors-1.2.39-windows-i386-httpd-2.2.x版本,从名字可知,这个tomcat的connectors会对应多个Apache 2.2不同的版本.

nginx+tomcat+redis完成session共享

- - 企业架构 - ITeye博客
本文记录nginx+redis+tomcat实现session共享的过程. nginx安装: http://blog.csdn.net/grhlove123/article/details/47834673. redis安装: http://blog.csdn.net/grhlove123/article/details/47783471.

tomcat的集群配置

- - CSDN博客推荐文章
配置环境需要:1.Apache服务器,下载地址: http://httpd.apache.org/download.cgi#apache22.  2.tomcat6.0或者tomcat7.0,(集群中tomcat不能既有tomcat6又有tomcat7,否则虽能够负载均衡,但不能进行session复制,下载地址: http://tomcat.apache.org/.

solrCloud+tomcat+zookeeper集群配置

- - 研发管理 - ITeye博客
     SolrCloud是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心.    上面也说了  SolrCloud是基于Solr和Zookeeper的分布式搜索方案,所有要部署solrCloud+tomcat+zookeeper的集群,必须先安装zookeeper.

tomcat集群(共享session)

- - 研发管理 - ITeye博客
其实就是上述这样的一个架构,下面是原理. 1)  Apache装有一个模块,这个模块叫mod_jk. 2)  Apache通过80端口负责解析任何静态web内容. 3)  任何不能解析的内容,用表达式告诉mod_jk,让mod_jk派发给相关的app server去解释. 通过上述的文字描述我们可以得知:.