Nginx服务器 之反向代理与负载均衡

一、反向代理

正向代理:

客户端要获取的资源就在服务器上,客户端请求的资源路径就是最终响应资源的服务器路径,这就是正向代理。正向代理的特点:就是我们明确知道要访问哪个网站地址。

反向代理:

客户端想获取服务器集群中(服务1,服务2,服务3 他们的资源相同)中的资源,但是客户端无法与该服务器集群建立连接,但我们可以与另一台服务器(代理服务器)建立连接且该服务器能获取服务器集群中的资源。这个时候客户端就可以通过请求代理服务器,获取想要的资源,但客户端并不知道给他资源的是哪个服务器。这种方式就是反向代理。

二、负载均衡

  当一台服务器的单位时间内的访问量越大的时候,服务器的压力会越大。当一台服务器压力大得超过自身的承受能力的时候,服务器会崩溃。为了避免服务器崩溃,让用户有更好地体验,我们通常通过负载均衡的方式来分担服务器的压力。那么什么是负载均衡呢?我们通过建立很多个服务器,把这些服务器组成一个服务器集群,然后,当用户访问我们网站的时候,先访问一个中间服务器,再让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该选择的服务器。这样,用户的每次访问,都会保证服务器集群中的每个服务器的压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。负载均衡就是采用反向代理的思想。

三、Nginx中负载均衡的实现

Nginx是一款可以通过反向代理实现负载均衡的服务器,使用Nginx服务实现负载均衡的时候,用户的访问首先会访问到Nginx服务器,然后Nginx服务器再从服务器集群表中选择压力较小的服务器,然后将该访问请求引向该服务器。若服务器集群中的某个服务器崩溃,那么从待选服务器列表中将该服务器删除,也就是说一个服务器假如崩溃了,那么Nginx就肯定不会将访问请求引入该服务器了。

1、创建fzjh.conf配置文件

  在/usr/local/nginx/conf下创建fzjh.conf文件,文件内容如下:

user  nobody;
worker_processes  2;
events {
    worker_connections  1024;
}
http{
   #=upstream设置负载均衡的待选服务器列表,在运行中如果有服务器崩溃那该服务器就会在该列表中移除
    upstream mypro{
        server 219.133.55.36;#中国万维网
        server 115.239.210.27;#百度的ip
    }
    server{
        listen 8080;
        #====== 对ngnix更目录做负载均衡===
        location / {
           #==选择要代理的服务器要与upstream对应==========
            proxy_pass http://mypro;
        }
    }
}

2、加载fzjh.conf配置文件

 执行命令: /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/fzjh.conf

3、测试是否成功

  在这里我们的负载均衡待选服务器列表是百度和中国万维网,也就说我们访问我的主机名+8080 就可以进行测试,如果页面在百度与中国万维网中切换,就表示成功。

  我的主机是我的阿里云ecs服务器大家可以试试:http://www.shanheyongmu.cn:8080

四、Upstream模块详解

Upstream模块:该模块是Nginx服务器的一个重要模块。Upstream模块实现在轮询和客户端ip之间实现后端的负载均衡。常用的指令有ip_hash指令、server指令和upstream指令等。该模块主要进行轮询算法。upstream指令主要是用于设置一组可以在proxy_pass和fastcgi_pass指令中使用额代理服务器,默认负载均衡方式为轮询。

ip_hash指令:在负载均衡系统中,假如用户在某台服务器上登录,那么如果该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的一个服务器,那么此时如果将已经登录服务器A的用户再定位到其他服务器,显然不妥。故而,我们可以采用ip_hash指令解决这个问题,如果客户端请求已经访问了服务器A并登录,那么第二次请求的时候,会将该请求通过哈希算法自动定位到该后端服务器中。简单说ip_hash指令可以实现当用户使用同一浏览器在A服务器登录后,那他后续的所有请求都在同一服务器中进行,Nginx代理服务器不会将他的请求分配到其他服务器上,以此规避用户登录信息在不同服务器间流转的问题,从而保证用户只需登录一次。

ip_hash的使用:在fzjh.conf配置文件中开启该功能

server指令: 主要用于指定服务器的名称和参数。

使用:在fzjh.conf配置文件中开启该功能

注意:在实际开发中weight不要与ip_hash同时使用

负载均衡不同实现方式的优缺点:假如使用硬件的方式实现负载均衡,那么中间的转发机构就是硬件,这个时候运行的效率非常高,但是对应的成本也非常高。如果我们采用软件的方式来实现负载均衡,那么中间的转发机构就是软件,这个时候,运行效率不如硬件,但是成本相对来说低得多。而使用Nginx服务器实现负载均衡,那么就是通过软件的方式来实现负载均衡,并且Nginx本身支持高并发等。故而使用Nginx服务器实现负载均衡,能大大节约企业的成本,并且由于Nginx是服务器软件,其执行效率也是非常高。

时间: 2024-08-05 18:30:39

Nginx服务器 之反向代理与负载均衡的相关文章

nginx+tomcat实现反向代理的负载均衡

nginx+tomcat实现反向代理的负载均衡 安装java环境 server12: [[email protected] ~]# sh jdk-6u32-linux-x64.bin [[email protected] ~]# mv jdk1.6.0_32/ /usr/local/ [[email protected] ~]# cd /usr/local/ [[email protected] local]# mv jdk1.6.0_32/ java [[email protected] lo

nginx和httpd反向代理和负载均衡tomcat集群

实验准备: 1.虚拟机172.18.250.77 安装nginx和httpd 实现负载均衡和反向代理 2.虚拟机172.18.250.78 安装tomcat 3.虚拟机172.18.250.79 安装tomcat 架构图: 一.nginx反向代理和负载均衡 1.安装nginx和tomcat ]# rpm -ivh nginx-1.8.0-1.el6.ngx.x86_64.rpm  ]# ls apache-tomcat-7.0.55.tar.gz  jdk-7u79-linux-x64.rpm 

nginx详解反向代理、负载均衡、LNMP架构上线动态网站

nginx介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器.Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发的,它已经在该站点运行超过两年半了.Igor Sysoev在建立的项目时,使用基于BSD许可. nginx和apache区别 Nginx 轻量级,采用 C 进行编写,同样的 web 服务,会占用更

Nginx七层反向代理和负载均衡

1.介绍 1.1 Nginx不仅是一个出色的web软件,其七层代理和负载均衡也是相当出色.Nginx做前端代理,当用户请求服务时,可以根据url进行判断,然后分配到不同的后台webserver上. 1.2 Nginx的负载均衡实现原理:首先在http模块中配置使用upstream模块定义后台的web server的池子,名为proxy-web,在池子中我们可以添加多台后台webserver,其中状态检查.调度算法都是在池子中配置:然后在serverr模块中定义虚拟主机,但是这个虚拟主机不指定自己

nginx简单实现反向代理和负载均衡

一.环境 一台nginx做反向代理:192.168.88.142 两台tomcat机器做web:192.168.88.143  192.168.88.144 安装过程略,下一篇详细说明 二.nginx配置文件 nginx:192.168.88.142 user  www www;                     ##用户和组 worker_processes  1;               ##和cpu核数有关 events { use epoll;                

Nginx反向代理以及负载均衡配置

前提:最近在研究nginx的用法,在windows上小试了一下,由于windows下不支持nginx缓存配置,所以本文主要是讲nginx,以及反向代理与负载均衡. [一.为什么要使用nginx] 要回答为什么要使用nginx,那就先说说nginx能做些什么. 首先,nginx能做反向代理,那么什么是反向代理呢,举个栗子,我想在本地使用 www.mickey.com 的域名去访问 www.taobao.com.那么这个时候我们就可以通过nginx去实现. 再者,nginx能实现负载均衡,什么是负载

nginx实现反向代理、负载均衡-技术流ken

1.简介 本篇博文是<nginx实现动态/静态文件缓存-技术流ken>的二部曲.将详细介绍nginx如何实现反向代理以及负载均衡技术,并辅以实战案例. 反向代理--"反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器." 负载均衡--"网络专用术语,负载均衡建立在现有网络结构之

Nginx详解(正向代理、反向代理、负载均衡原理)

nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现. 这里主要通过三个方面简单介绍nginx 反向代理 负载均衡 nginx特点 1. 反向代理 关于代理 说到代理,首先我们要明确一个概念,所谓代理就是一个代表.一个渠道: 此时就设计到两个角色,一个是被代理角色,一个是目标角色,被代理角色通过这个代理访问

Nginx反向代理及负载均衡介绍

Nginx的产生 没有听过Nginx?那么一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器.基于REST架构风格,以统一资源描述符(Uniform Resources Identifier)URI或者统一资源定位符(Uniform Resources Locator)URL作为沟通依据,通过HTTP协议提供各种网络服务. 然而,这些服务器在设计之初受到当时环境的局限,例如当时的用户规模,网络带宽,产品特点等局限并且各自的定位和发展都不尽相同.这也使得