nginx+tomcat集群负载均衡中的多虚拟主机配置
2023-09-27 14:27:57 时间
虽然夜深了,但是还是解决了这个困扰我一个晚上的问题,记录下来备查。
接着我前不久写的这一篇来的: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集群机的地址及负载因子:
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即可:
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,主要是配置虚拟主机:
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负载均衡 直接封面图可以发现:最左侧的便是客户机,中间的就是负载均衡的机器,最右侧的便是通过负载后真正访问的服务器,我这里只画了两台服务器,实际情况根据需求可能还会不断增加。
相关文章
- Web与Tomcat
- tomcat加载jar包顺序
- 解决tomcat at org.apache.tomcat.util.buf.CharChunk.append(CharChunk.java:355)
- ssl + nginx + tomcat 部署方案
- 【Linux运维-集群技术进阶】Nginx+Keepalived+Tomcat搭建高可用/负载均衡/动静分离的Webserver集群
- LVS负载均衡+动静分离+高可用(nginx+tomcat+keepalived)
- Nginx一台机器上负载均衡多个Tomcat
- centos7 搭建keepalived+Nginx+tomcat
- Nginx+tomcat配置集群负载均衡
- 使用Nginx实现Tomcat集群负载均衡
- IDEA 创建Web项目并在Tomcat中部署运行(转)
- javaee加密部署,tomcat使用自己的classloader解密
- nginx + tomcat配置负载均衡
- 记一次使用命令行启动部署在tomcat上的应用
- 【IBM】使用 CAS 在 Tomcat 中实现单点登录
- Tomcat服务器集群与负载均衡实现
- tomcat - 部署Web应用
- 【Jetty】Jetty 的工作原理以及与 Tomcat 的比较
- nginx配置负载均衡,tomcat宕机响应缓慢,自动切换的问题
- nginx + tomcat配置负载均衡