Nginx + Tomcat 负载均衡配置详解

Nginx作为反向代理服务器,实现负载均衡。首先浏览器发起请求,到达Nginx,由Nginx将请求地址转发给相应的tomcat服务器,再由tomcat服务器将结果返回给Nginx,Nginx将结果再转发给浏览器。

在这过程中,对于浏览器来说,并不知道后端的存在, 相对于Tomact来说,当前的客户端是Nginx服务器。这就完成了一个代理的过程。

首先准备三台Linux服务器;IP地址分别为 192.168.1.61  192.168.1.62  192.168.1.63
其中61安装nginx服务器,将发给61的请求全部转发给62安装了tomcat的服务器

配置nginx-balance.conf文件

server {
listen 80;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
 #  root html;
index index.html index.htm;

proxy_pass http://192.168.1.62:8080;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

保存退出,我们的反向代理就配置好了。

我们在准备多个tomcat服务器,IP为192.168.1.63     192.168.1.64   192.168.1.65

如果我们有多个服务器,并有nginx根据一定的策略将用户的请求分别让多个服务器,处理,这样我们就实现了负载均衡。

配置负载均衡,修改配置文件为

worker_processes 2;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

# upstream 配置一组后端服务器,
# 请求转发到upstream后,nginx按策略将请求指派出某一服务器
# 即配置用于负载均衡的服务器群信息
upstream backends {
#均衡策略
#none 轮询(权重由weight决定)
#ip_hash
#fair
#url_hash

server 192.168.1.62:8080;
server 192.168.1.63;

# weight:权重,值越高负载越大;
# server 192.168.1.64 weight=5;

# backup:备份机,只有非备份机都挂掉了才启用;
server 192.168.1.64 backup;

# down: 停机标志,不会被访问
server 192.168.1.65 down;

# max_fails:达到指定次数认为服务器挂掉;
# fail_timeout:挂掉之后过多久再去测试是否已恢复
server 192.168.1.66 max_fails=2 fail_timeout=60s;
}

server {
listen 80;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
root html;
index index.html index.htm;
}

# 反向代理设置,将所有/proxy_test/路径下请求发给本机上的tomcat
location /proxy_test/ {
proxy_pass http://localhost:8080;
}

# 负载均衡设置,将所有jsp请求发送到upstream backends指定的服务器群上
location ~ \.jsp$ {
proxy_pass http://backends;

# 真实的客户端IP
proxy_set_header X-Real-IP $remote_addr;
# 请求头中Host信息
proxy_set_header Host $host;
# 代理路由信息,此处取IP有安全隐患
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 真实的用户访问协议
proxy_set_header X-Forwarded-Proto $scheme;
# 默认值default,
# 后端response 302时 tomcat header中location的host是http://192.168.1.62:8080
# 因为tomcat收到的请求是nginx发过去的, nginx发起的请求url host是http://192.168.1.62:8080
# 设置为default后,nginx自动把响应头中location host部分替换成当前用户请求的host部分
# 网上很多教程将此值设置成 off,禁用了替换,
# 这样用户浏览器收到302后跳到http://192.168.1.62:8080,直接将后端服务器暴露给浏览器
# 所以除非特殊需要,不要设置这种画蛇添足的配置
proxy_redirect default;
}

# 一个url重写的例子,浏览器请求 /page.go时,url被重写成/test/page.jsp
location ~ \.go$ {
rewrite ^(.*)\.go$ /test/$1\.jsp last;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

}
}

配置均衡策略,Nginx会根据配置的策略将不同的请求转发给服务器组的成员。

upstream backends {
#均衡策略
#none 轮询(权重由weight决定)
#ip_hash
#fair
#url_hash

server 192.168.1.62:8080;
server 192.168.1.63;

# weight:权重,值越高负载越大;
# server 192.168.1.64 weight=5;

# backup:备份机,只有非备份机都挂掉了才启用;
server 192.168.1.64 backup;

# down: 停机标志,不会被访问
server 192.168.1.65 down;

# max_fails:达到指定次数认为服务器挂掉;
# fail_timeout:挂掉之后过多久再去测试是否已恢复
server 192.168.1.66 max_fails=2 fail_timeout=60s;
}

时间: 2024-11-02 20:03:52

Nginx + Tomcat 负载均衡配置详解的相关文章

Nginx的负载均衡方案详解

Nginx的负载均衡方案详解 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Nginx的负载均衡方案有: 1.轮询 轮询即Round Robin,根据Nginx配置文件中的顺序,依次把客户端的Web请求分发到不同的后端服务器. 配置的例子如下: http{ upstream sampleapp { server <<dns entry or IP Address(optional with port)>>; server <&l

Centos 7基于DR(直接路由)模式的负载均衡配置详解

DR(直接路由)是三种负载均衡模式其中之一,也是使用最多的一种模式,关于该模式的介绍,可以参考博文:LVS负载均衡群集详解. DR的工作模式示意图如下: 该模式的原理已经在上面链接的博文中写了下来.现在直接搭建一个基于DR模式的负载均衡群集. 环境如下: 在上面这个环境中,需要解决的问题有下面几点: 1.所有web节点和调度器都配置上VIP:客户端访问VIP(群集的虚拟IP地址)时,若是 调度器将请求转发给web节点,然后由web节点直接去响应客户端,那么客户端在收到 数据包后,发现收到的数据包

Nginx+Tomcat负载均衡配置

Tomcat安装:#官方网站下载tomcat 6.0.30或者其他版本: cd /usr/src && tar xzf apache-tomcat-6.0.30.tar.gz #直接解压就可以使用,解压完成执行,同时拷贝两个tomcat,命名为tomcat1 tomcat2 mv apache-tomcat-6.0.30 /usr/local/tomcat1 cp /usr/local/tomcat1 /usr/local/tomcat2 -r #分别修改tomcat1和tomcat2 端

Linux记录-Nginx+Tomcat负载均衡配置

Nginx负载均衡配置及策略: 轮询(默认) 优点:实现简单缺点:不考虑每台服务器的处理能力配置示例如下:upstream www.xxx.com {# 需要负载的server列表server www.xxx.com:8080;server www.xxx.com:9080;}权重,使用的较多的策略优点:考虑了每台服务器处理能力的不同,哪台机器性能高就给哪台机器的权重高一些配置示例如下:upstream www.xxx.com {# 需要负载的server列表,weight表示权重,weight

centos 7部署Tomcat及其负载均衡配置详解

Tomcat服务器是一个免费的开源web应用服务器,属于轻量级应用服务器,在中小型系统和并发用户不是很多的场合中被普遍使用,是开发和测试JSP程序的首选.一般来说,Tomcat虽然和apache或者Nginx这些web服务器一样,具有处理HTML页面的功能,然而由于其处理静态页面的能力远不如apache或者Nginx,所以Tomcat一般是作为一个servlet和JSP容器,单独运行在后端,Tomcat应用场景如下: 用户访问的永远是apache/Nginx服务器,然后由apache/Nginx

Tomcat负载均衡原理详解及配置

结构图 使用Tomcat的童鞋们注意了.为了增加tomcat的性能和稳定性,我们一般采用balance和session同步机制. 下图列出了我们常用也是最简单的解决方案. 说明 1 balance 负载均衡我们一般采用Apache proxy和Apache+mod_jk方式 所使用软件:Apache2.2.19 http://httpd.apache.org/download.cgi#apache22; Tomcat7          http://tomcat.apache.org/down

nginx负载均衡配置详解

使用负载均衡的话,修改配置http节点如下: #设定http服务器,利用它的反向代理功能提供负载均衡支持http {     #设定mime类型,类型由mime.type文件定义     include             /etc/nginx/mime.types;     default_type    application/octet-stream;     #设定日志格式     access_log        /var/log/nginx/access.log;     #省

apache负载均衡配置详解

准备东西 tomcat Apache server mod_jk-1.2.31-httpd-2.2.3.so 没有可以去网上下载  一搜一大把  这里就不讲怎么下载了 首先安装apache 一. 找到安装目录  modules,把下载的 mod_jk-1.2.31-httpd-2.2.3.so 改名 mod_jk.so 例如:D:\Program Files\apache\modules 然后把mod_jk.so放进modules文件夹里 二. 找到 conf 文件夹 添加文件:workers.

CentOS下LVS DR模式负载均衡配置详解

一安装LVS准备: 1.准备4台Centos 6.2 x86_64 注:本实验关闭 SELinux和IPtables防火墙. 管理IP地址 角色 备注 192.168.1.101 LVS主调度器(Master Director) 对外提供服务的VIP为192.168.1.180 192.168.1.114 LVS从调度器(Backup Director) 平时可以作为RS(真实服务器使用) 192.168.1.104 RS1(真实服务器)   192.168.1.103 RS2(真实服务器)