nginx实现反向代理及负载均衡

一、反向代理

1.什么是反向代理

通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理服务器向Internet上的web服务器发起请求,最终达到客户机上网的目的(也就是正向代理)。

而反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

如下图:

Nginx只做请求的转发,后台有多个http服务器提供服务,nginx的功能就是把请求转发给后面的服务器,决定把请求转发给谁。

2、安装tomcat2个,现在我们模拟的话服务器就采用tomcat来模拟。

安装tomcat的过程就不介绍了,在http://blog.csdn.net/u013144287/article/details/78499485过程中有介绍,

(1)创建一个tomcat目录mkdir -p /usr/local/tomcats

在此目录下安装两个tomcat如图所示:

(2)修改tomcat2的端口号,vi ./tomcat2/conf/server.xml

<Server port="8006" shutdown="SHUTDOWN">
  1. <Connector port="8081" protocol="HTTP/1.1"

  2.  

    connectionTimeout="20000"

  3.  

    redirectPort="8443" />

<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

修改此3处端口号,分别在原来基础上加1,然后wq保存,启动两台tomcat

3、需求

nginx的安装可以参考http://blog.csdn.net/u013144287/article/details/78408001此篇文章

通过访问不同的域名访问运行在tomcat不同端口的服务器,中间使用nginx反向代理服务器

windows上访问需要修改hosts文件进行配置如下:

8080.zcinfo.com 访问运行8080端口的tomcat

8082.zcinfo.com 访问运行8081端口的tomcat

如图所示:hosts目录是:C:\Windows\System32\drivers\etc

4、Nginx的配置

在Nginx的配置文件里面加入如下配置

  1. upstream tomcatserver1 {

  2.  

    server 192.168.3.43:8080;

  3.  

    }

  4.  

    upstream tomcatserver2 {

  5.  

    server 192.168.3.43:8082;

  6.  

    }

  7.  

    server {

  8.  

    listen 80;

  9.  

    server_name 8080.zcinfo.com;

  10.  

  11.  

    #charset koi8-r;

  12.  

  13.  

    #access_log logs/host.access.log main;

  14.  

  15.  

    location / {

  16.  

    proxy_pass http://tomcatserver1;

  17.  

    index index.html index.htm;

  18.  

    }

  19.  

    }

  20.  

    server {

  21.  

    listen 80;

  22.  

    server_name 8082.zcinfo.com;

  23.  

  24.  

    #charset koi8-r;

  25.  

  26.  

    #access_log logs/host.access.log main;

  27.  

  28.  

    location / {

  29.  

    proxy_pass http://tomcatserver2;

  30.  

    index index.html index.htm;

  31.  

    }

  32.  

    }

重启nginx

ps:如果在同一个域名下有多台服务器提供服务,此时需要nginx负载均衡。
5、测试

至此恭喜您,nginx反向代理成功

二、负载均衡

1、什么是负载均衡?

负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

2、需求

nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至tomcat服务器。

nginx负载均衡服务器:192.168.3.43

tomcat1服务器:192.168.3.43:8080

tomcat2服务器:192.168.3.43:8081

3、nginx的配置

  1. upstream tomcatserver1 {

  2.  

    server 192.168.3.43:8080;

  3.  

    server 192.168.3.43:8082; #多加了此台服务器

  4.  

    }

  5.  

    upstream tomcatserver2 {

  6.  

    server 192.168.3.43:8082;

  7.  

    }

  8.  

    server {

  9.  

    listen 80;

  10.  

    server_name 8080.zcinfo.com;

  11.  

  12.  

    #charset koi8-r;

  13.  

  14.  

    #access_log logs/host.access.log main;

  15.  

  16.  

    location / {

  17.  

    proxy_pass http://tomcatserver1;

  18.  

    index index.html index.htm;

  19.  

    }

  20.  

    }

  21.  

    server {

  22.  

    listen 80;

  23.  

    server_name 8082.zcinfo.com;

  24.  

  25.  

    #charset koi8-r;

  26.  

  27.  

    #access_log logs/host.access.log main;

  28.  

  29.  

    location / {

  30.  

    proxy_pass http://tomcatserver2;

  31.  

    index index.html index.htm;

  32.  

    }

  33.  

    }

如果两台服务器性能差不多这样设置重启nginx就行了,但是现在假如两台服务器性能不一样,还需要设置性能权重,让性能高服务器做更多事情。只需要加入weight=?就行了,如下:

  1. upstream tomcatserver1 {

  2.  

    server 192.168.3.43:8080 weight=2;

  3.  

    server 192.168.3.43:8082 weight=1;

  4.  

    }

  5.  

    upstream tomcatserver2 {

  6.  

    server 192.168.3.43:8082;

  7.  

    }

  8.  

    server {

  9.  

    listen 80;

  10.  

    server_name 8080.zcinfo.com;

  11.  

  12.  

    #charset koi8-r;

  13.  

  14.  

    #access_log logs/host.access.log main;

  15.  

  16.  

    location / {

  17.  

    proxy_pass http://tomcatserver1;

  18.  

    index index.html index.htm;

  19.  

    }

  20.  

    }

  21.  

    server {

  22.  

    listen 80;

  23.  

    server_name 8082.zcinfo.com;

  24.  

  25.  

    #charset koi8-r;

  26.  

  27.  

    #access_log logs/host.access.log main;

  28.  

  29.  

    location / {

  30.  

    proxy_pass http://tomcatserver2;

  31.  

    index index.html index.htm;

  32.  

    }

  33.  

    }

重新启动nginx,会发现8080出现了两次,8082出现一次这样轮循。

ps:关于nginx负载均衡的一些参数介绍例子

  1. 节点说明:

  2.  

    在http节点里添加:

  3.  

  4.  

    #定义负载均衡设备的 Ip及设备状态

  5.  

    upstream myServer {

  6.  

  7.  

    server 127.0.0.1:9090 down;

  8.  

    server 127.0.0.1:8080 weight=2;

  9.  

    server 127.0.0.1:6060;

  10.  

    server 127.0.0.1:7070 backup;

  11.  

    }

  12.  

  13.  

    在需要使用负载的Server节点下添加

  14.  

  15.  

    proxy_pass http://myServer;

  16.  

  17.  

    upstream 每个设备的状态:

  18.  

  19.  

    down 表示单前的server暂时不参与负载

  20.  

    weight 默认为1.weight越大,负载的权重就越大。

  21.  

    max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误

  22.  

    fail_timeout:max_fails 次失败后,暂停的时间。

  23.  

    backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

4、效果

至此,恭喜您,nginx反向代理和负载均衡搭建成功

原文地址:https://www.cnblogs.com/miaozhihang/p/9454941.html

时间: 2024-08-27 19:45:45

nginx实现反向代理及负载均衡的相关文章

nginx简单反向代理和负载均衡(ubuntu)

nginx简单反向代理与负载均衡 环境:三台ubuntu 12.04.5 虚拟机    均装有nginx 1.1.19 以下u1(192.168.240.129) ,u2(192.168.240.130),u3(192.168.240.131)代表三台虚拟机 简单的反向代理配置:(u1反向到u2) u1的配置: server { listen 80 default_server; server_name  a.jh.net; index index.html index.php root /ho

实践NGINX的反向代理与负载均衡

实践NGINX的反向代理与负载均衡 安装nginx过程 [[email protected] opt]# yum install pcre-devel openssl-devel -y [[email protected] opt]# wget -q http://nginx.org/download/nginx-1.10.2.tar.gz [[email protected] opt]# useradd nginx -s /sbin/nologin -M [[email protected]

nginx实现反向代理与负载均衡

nginx在LB Cluster集群中也可以扮演一定的角色,即反向代理与负载均衡.在一个Web服务中,来自客户端的请求可以经由nginx服务器转发至后端服务器,并且按照一定的算法实现负载均衡. 1.反向代理 1)在192.168.10.17/24与192.168.10.77/24主机上安装nginx,提供web服务. 编辑两台主机的主页文件内容分别为 inode17 page 和inode77 page 2)主机172.16.10.66提供nginx的反向代理服务 为了与后端主机进行通信,此主机

nginx 作为反向代理实现负载均衡的例子

nginx 这个轻量级.高性能的 web server 主要可以干两件事情: 〉直接作为http server(代替apache,对PHP需要FastCGI处理器支持): 〉另外一个功能就是作为反向代理服务器实现负载均衡 以下我们就来举例说明如何使用 nginx 实现负载均衡.因为nginx在处理并发方面的优势,现在这个应用非常常见.当然了Apache的 mod_proxy和mod_cache结合使用也可以实现对多台app server的反向代理和负载均衡,但是在并发处理方面apache还是没有

nginx配置反向代理和负载均衡

一.反向代理 说明:应该有一个nginx服务器有多个应用服务器(可以是tomcat),本文使用一台虚拟机,安装一个nginx,多个tomcat,来模拟 upstream tomcats{ server 192.168.25.148:8080; server 192.168.25.148:8081; } server { listen 80; server_name tomcat.taotao.com; #charset koi8-r; #access_log logs/host.access.l

Nginx 的反向代理与负载均衡

反向代理与负载均衡 反向代理: 明确知道要访问哪个网站,借助代理网站来访问就是正向代理:第三方服务器为我们提供了访问服务器集群的内容,但我们不知道是哪台服务器提供的内容,这种代理方式称为反向代理. 负载均衡: 建立很多个服务器,这些服务器组成一个服务器集群,当有请求时中间服务器选择一个压力较小的服务器,然后将请求引入该选择的服务器,这样每个服务器压力趋于平衡,这就是负载均衡.负载均衡是通过反向代理来实现的. Nginx 负载均衡的实现 1.新建一个配置文件fzjh.conf中 touch fzj

Nginx的反向代理及负载均衡

1.集群的简介 简单来说,集群就是指一组相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点都是运行各自服务的独立服务器.这些服务器之间可以彼此通信,协同向用户提供应用程序.系统资源和数据,并以单一系统的模式加以管理.当用户客户机请求集群系统时,集群给用户的感觉就是一个单一的服务器,而实际上用户请求的是一组集群服务器. 集群主要包括几大特点:高性能.价格有效性.可伸缩性.高可用性.透明性.可管理性和可编程性. 2.负载均衡集群 常见的负载均衡的架构包括有负载均衡集群.高

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

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

在ubuntu上面配置nginx实现反向代理和负载均衡

上一篇文章(http://www.cnblogs.com/chenxizhang/p/4684260.html),我做了一个实验,就是利用Visual Studio,基于Nancy框架,开发了一个自托管(Self-hosting)的应用程序,然后将其部署到了一台Ubuntu的虚拟机上面,通过mono将其顺利地运行了起来,这样也就实现了.NET应用程序在Liunx系统上面的移植. 这一篇要讲解的是进一步的实验,我们都知道Nginx这款服务器,它可以用来做反向代理服务器,也可以做负载均衡. 关于ng