`

负载均衡-软负载-nginx|+tomcate+win

阅读更多

参考地址:

   http://www.chinanginx.cn/?page_id=227   nginx中文官网

   http://www.nginx.cn/2181.html

   http://cxshun.iteye.com/blog/1535188

   http://ari.iteye.com/blog/833153

   http://www.cnblogs.com/xiaogangqq123/archive/2011/03/04/1971002.html

 

要求配置nginx主从关系可以参考:

   http://www.server110.com/nginx/201309/1309.html

 

环境:Window + Nginx+Tomcat6

 

1、nginx简介:

     Nginx (发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。  其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页伺服器中表现较好.目前中国大陆使用nginx网站用户有:新浪、网易、 腾讯,另外知名的微网志Plurk也使用nginx。

 

2、下载地址:http://nginx.org/ ,文章附件有下载。

 

3、本文主要基于Nginx下配置两台tomcat,结构如下图:

 

3、目录结构
      Nginx-

               |_  conf   配置目录

               |_  contrib

               |_  docs 文档目录

               |_  logs  日志目录

               |_  temp 临时文件目录

               |_  html 静态页面目录

               |_  nginx.exe 主程序

     window下安装Nginx极其简单,解压缩到一个无空格的英文目录即可(个人习惯,担心中文出问题),双击nginx.exe启动。  
也可以在dos目录下启动、跟新、停止,我的nginx是在D:\nginx-1.5.8路径下,dos下操作如下图:

     启动:

     停止:

    重新加载文件:当修改了nginx文件,如配置文件。。。。。如果nginx开着不需要关闭服务器重启,直接执行该命令重新加载文件就可以了。

    启动后我们打开任务管理器,可以看到两个nginx.exe在那里好好的。这说明我们已经启动了,至于为什么两个,我们这里不深究,在浏览器中输入:http://localhost可以看到如图,说明启动成功。

 

4、nginx.conf配置文件说明
   Nginx配置文件默认在conf目录,主要配置文件为nginx.conf,我们安装在D:\nginx-1.5.8、默认主配置文件 为D:\nginx-1.5.8\conf\nginx.conf。下面是nginx作为前端反向代理服务器的配置。

   dome里一个server的说明:

  server {
        listen       80;
        server_name  localhost;

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

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
     这段代码在server里面,相当于一个代理服务器,可以配置多个,但是端口listen必须配置不一样。

     listen:表示当前的代理服务器监听的端口,默认的是监听80端口。注意,如果我们配置了多个server,这个listen要配置不一样,不然就不能确定转到哪里去了。

 

     server_name:表示监听到之后需要转到哪里去,这时我们直接转到本地;
     location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里

     root:里面配置了root这时表示当匹配这个请求的路径时,将会在这个文件夹内寻找相应的文件,这里对我们之后的静态文件伺服很有用。

    

     index:当没有指定主页时,默认会选择这个指定的文件,它可以有多个,并按顺序来加载,如果第一个不存在,则找第二个,依此类推。

下面的error_page是代表错误的页面,这里我们暂时不用,先不管它。

 

   5、自己配置最简单的转发:
worker_processes  1;

events {
    worker_connections  1024;
}

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

    sendfile        on;
	
    server {
        listen       80;
		server_name  localhost;
		 
        location / {
            proxy_pass http://127.0.0.1:8013/nginxTest/index.jsp;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

     server_name  在这里可以不配置;

     proxy_pass,它表示代理路径,相当于转发,而不像之前说的root必须指定一个文件夹;
      配置完成后输入:http://localhost 可以进入 proxy_pass指定的页面,表示成功;

 

     6、自己配置一台负载均衡机器,负载两台服务器:

#Nginx所用用户和组,window下不指定
#user  nobody;

#工作的子进程数量(通常等于CPU数量或者2倍于CPU)
worker_processes  2;

#错误日志存放路径
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#指定pid存放文件
#pid        logs/nginx.pid;

events {
	#使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue,window下不指定。
	#use epoll; 
	
	#允许最大连接数  
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    charset utf-8;
	
	#定义日志格式
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
	
	#跳转服务的别名
	#upstream 指定负载均衡的机器服务器地址,这里我们我们用没有多台机器,用不同的端口来区分;
	upstream nginxTestUrl { 
		#weigth 参数表示权值,权值越高被分配到的几率越大,可以不配
		server	192.168.3.189:8013 weight=1;
		server  192.168.3.189:8023 weight=1; 
		
		#ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,不需要可以不配
		#ip_hash;
    }  
	
    server {
        listen       80;
        server_name  localhost;
		
        #access_log  logs/host.access.log  main;

        location / {
			#proxy_pass 随机转向到配置的服务器上,配置形式直接用http://+upstream的名称来使用
			#upstream中的server元素必须要注意,不能加http://,但proxy_pass中必须加
            proxy_pass http://nginxTestUrl;
			
			#proxy_redirect proxy_set_header 必须配置,不然如果后端真是的服务器设置有类似防盗链或者根据http请求头中的host字段来进行路由或判断功能的话,
			#如果反向代理层的nginx不重写请求头中的host字段,将会导致请求失败在查找项目的时候会找不到资源
			#说明链接:http://zhidao.baidu.com/link?url=Ify6aPe0tTcOlLuO2zuYkLIH_ITT-aThzXVIFf3yTFOKpcF314SQyrcYY5j0Awk4xU6Qb0JSaDESLBoKKnIVuK
			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;
			
			
			#下面是一些优化配置,测试可以不用配置
			client_max_body_size    10m;	#允许客户端请求的最大单文件字节数
			client_body_buffer_size 128k;	#缓冲区代理缓冲用户端请求的最大字节数
			proxy_connect_timeout   1;	#nginx跟后端服务器连接超时时间(代理连接超时),时间设置短一些可以解决多台服务器突然出现的某一台down机器引起的链接超时
			proxy_send_timeout      300;	#后端服务器数据回传时间(代理发送超时)
			proxy_read_timeout      300;	#连接成功后,后端服务器响应时间(代理接收超时)
			proxy_buffer_size       4k;	#设置代理服务器(nginx)保存用户头信息的缓冲区大小
			proxy_buffers           4 32k;	#proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
			proxy_busy_buffers_size 64k;	#高负荷下缓冲大小(proxy_buffers*2)
			proxy_temp_file_write_size 64k;	#设定缓存文件夹大小,大于这个值,将从upstream服务器传
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

    设置反向代理的时间可以解决因某台服务去down机而引起的链接超时问题:

        proxy_connect_timeout 1;
        proxy_send_timeout 30;
        proxy_read_timeout 60;

  • 大小: 48 KB
  • 大小: 538 Bytes
  • 大小: 426 Bytes
  • 大小: 458 Bytes
  • 大小: 67.4 KB
  • 大小: 53.3 KB
分享到:
评论

相关推荐

    Nginx++Keepalived+Tomcat负载均衡&动静分离

    Nginx++Keepalived+Tomcat负载均衡&动静分离配置 本文主要介绍了Nginx、Keepalived和Tomcat的负载均衡和动静分离配置,旨在帮助读者了解如何搭建高可用、高性能的Web应用系统。 一、环境准备 在开始配置之前,...

    docker-compose-flask:docker-compose部署nginx + gunicorn + flask + redis(或db)

    码头工人组成烧瓶 +-------------+ +------------+ +--------------+ +-----------+ | | | | | | | | | nginx +-------+ gunicorn +---------+ flask app +-----+ redis | | | | | |

    Nginx+keepalived+tomcat实现性负载均衡(包含需要的包)

    在构建高性能、高可用性的Web服务时,使用Nginx+keepalived+tomcat的组合可以实现强大的负载均衡和故障转移功能。这个方案的核心思想是利用Nginx作为前端反向代理服务器,通过keepalived来确保服务的高可用性,并将...

    nginx-rtmp-win64.zip

    nginx-rtmp-win64;nginx-rtmp-win64 nginx-rtmp-win64 nginx-rtmp-win64 nginx-rtmp-win64 nginx-rtmp-win64nginx-rtmp-win64

    05-高并发负载均衡-nginx.png

    高并发负载均衡-Nginx安装思维导图,便捷整理思路,里面记载了Nginx安装的步骤以及注意事项,以及常用场景

    nginx+lua+redis 集群 连接插件和脚本

    本资源包“nginx+lua+redis集群 连接插件和脚本”正是为了解决这三者之间的协同工作,特别是针对原插件没有密码功能的问题进行了改进,使得安全性得到了提升。 首先,Nginx是一款轻量级的Web服务器/反向代理服务器...

    Nginx+tomcat+redis

    在构建高性能、高可用性的Web服务时,"Nginx+Tomcat+Redis"的组合是一种常见的架构模式。这个架构充分利用了每个组件的优势,以实现高效的数据处理、动态内容渲染和负载均衡。以下是对这套技术栈的详细解释: 1. **...

    负载均衡nginx+tomcat+terracatta+nfs+mysql

    在构建高性能、高可用性的Web服务环境中,"负载均衡nginx+tomcat+terracotta+nfs+mysql"是一个常见的架构组合。这个组合充分利用了各组件的优势,以实现数据的高效处理、分布式存储以及会话共享,确保系统的稳定性和...

    Nginx实现负载均衡 web均衡负载 webservice负载均衡 Nginx实现负载均衡配制全说明

    Nginx实现负载均衡 web均衡负载 webservice负载均衡 Nginx实现负载均衡配制全说明 为了多台后台的web、webservice服务能均衡负载,可以使用nginx进行处理 1)配置文件全配制ok 2)有两个完整的web服务做例子,可以...

    基于nginx tcp负载均衡 + redis的集群聊天服务器,网络层使用muduo库搭建,数据库使用MySQL.zip

    基于nginx tcp负载均衡 + redis的集群聊天服务器,网络层使用muduo库搭建,数据库使用MySQL 基于nginx tcp负载均衡 + redis的集群聊天服务器,网络层使用muduo库搭建,数据库使用MySQL 基于nginx tcp负载均衡 + ...

    Nginx+KeepAlived+Tomcat负载架构

    本文将详细介绍如何通过`Nginx+KeepAlived+Tomcat`构建一个稳定、高效的负载均衡架构。 #### 二、关键技术介绍 ##### 1. Nginx - **简介**:Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)...

    nginx配置 +负载均衡+https协议

    - 对于负载均衡,可以通过在Nginx配置文件中定义多个后端服务器,并使用`proxy_pass`指令来实现。 ```nginx upstream backend { server backend1.example.com; server backend2.example.com; } server { ...

    Nginx+Tomcat+Redis实现负载均衡过程中session所需架包

    本篇将详细讲解如何在Nginx+Tomcat+Redis环境中实现负载均衡,并讨论session管理的关键知识点。 首先,Nginx是一个强大的HTTP和反向代理服务器,它能够通过分发请求到多个后端服务器来实现负载均衡。Nginx支持多种...

    nginx+eureka实现负载均衡实例

    `nginx` 是一款高性能的反向代理服务器,常用于实现负载均衡,而 `Eureka` 是 Netflix 提供的一个服务注册与发现组件,是微服务架构中的关键组件。本实例将讲解如何结合 `nginx` 和 `Eureka` 实现微服务的负载均衡,...

    nginx+redis+tomcat集群和负载均衡-可以直接使用软件都在里面了

    Nginx支持多种负载均衡策略,如轮询、最少连接、IP哈希等,可以根据实际需求选择合适的策略。 2. **Redis**:作为内存数据库,Redis提供高速的数据读写性能,尤其适合用于缓存服务。在高并发场景下,通过将热点数据...

    带nginx-rtmp-module模块的Nginx

    1. Nginx是一个高性能的Web服务器,常用于提供静态内容服务、反向代理和负载均衡。 2. nginx-rtmp-module是一个扩展模块,使Nginx支持RTMP协议,用于处理实时流媒体。 3. RTMP是一种实时通信协议,常用于视频直播和...

    Linux源码安装MySQL+MySQL主从+Nginx+Nginx负载均衡+redis+php+phpredis+tomcat

    在本教程中,我们将深入探讨如何在Linux环境中源码安装MySQL、MySQL主从复制、Nginx、Nginx负载均衡、Redis、PHP、phpredis以及Tomcat。这些技术是构建高效、可扩展的Web应用架构的基础。让我们逐一了解安装过程。 ...

    nginx 负载均衡

    负载均衡 ngix 1,virtual-service-address:是指虚拟服务器的ip 地址 2,real-service-address:是指真实服务器的ip 地址 3,scheduler:调度方法 (lna@networksbase.com 翻译 ipvsadm v1.21 2004 年4 月) ...

    centos源码安装nginx-1.20.2+nginx负载均衡

    centos源码安装nginx-1.20.2+nginx负载均衡

    Nginx+Tomcat+Redis搭建均衡负载集群

    在搭建均衡负载集群时,首先需要配置Nginx的反向代理和负载均衡设置。在Nginx的配置文件中,可以通过`upstream`块定义一组后端服务器,然后在`server`块中使用`proxy_pass`指令将请求转发到该组服务器。常用的负载...

Global site tag (gtag.js) - Google Analytics