`

学习Nginx反向代理实现简单负载均衡(图文)

 
阅读更多

      Nginx proxy作为Nginx的重要功能,使用nginx proxy基本可以实现一个完整的7层负载均衡。其特色如下:1、功能强大,性能卓越,运行稳定。2、配置简单灵活。

      Nginx proxy作为Nginx的重要功能,使用nginx proxy基本可以实现一个完整的7层负载均衡。
      其特色如下:
             1、功能强大,性能卓越,运行稳定。
             2、配置简单灵活。
             3、能够自动剔除工作不正常的后端服务器。
             4、上传文件使用异步模式。
             5、支持多种分配策略,可以分配权重,分配方式灵活

 

拓扑结构图

 

       配置环境:
       三台centos6.2X86  
       一台做Nginx Proxy 
       二台Apache做页面测试服务器

       配置步骤:
        安装前要先解决包的依赖问题:pcre-devel openssl zlib-devel

        一、安装nginx服务器
       1、后台的web服务使用Apache,有关apache 配置的文章这里不多说,本文重点在配置nginx反向代理
       2、安装Nginx服务

安装nginx服务

 

       3、修改nginx主配置文件,主配置文件路径:/usr/local/site/nginx/conf/nginx.conf,最好配置文件作下备份;

 

user  www;                                 指定nginx的运行用户, 
worker_processes  1;              指定线程,默认情况下Nginx是单线程运行, 
#error_log  logs/error.log;    日志模块 
#error_log  logs/error.log  notice; 
#error_log  logs/error.log  info; 
#pid    logs/nginx.pid;   //inx主进程ID 
events { 
 use epoll;        //inx的高效模式; 
 worker_connections  65535;                   //文件最大的连接数; 
}
http { 
include       mime.types;                     //置文件模块; 
default_type  application/octet-stream;             //核心配置文件模块; 
sendfile        on;                      //开启高效传输模式; 
tcp_nopush     on;                       //防止网络端口阻塞;   
#keepalive_timeout  0; 
keepalive_timeout  65;  
#gzip  on;                  //开启压缩模块,需要注意的是在配置文件中开启之后是不生效的,还需要加载gzip模块 
      
server { 
listen       80;               //监听的80端口 
server_name  proxy.rsyslog.net;        //指定代理服务器的域名 
     
location / { 
  root   html;                 //配置文件所在的目录,这里是相对路径 
  index  index.html index.htm;    //页面文件的类型; 
} 
error_page  404              /404.html;         //相关错误提示页面 
error_page   500 502 503 504  /50x.html; 
location = /50x.html { 
root   html; 
 }
}
} 
 

 

      重启服务,测试是否正常,links proxy.rsyslog.net 域名需要在dns服务器上配置正确。

      Nginx支持不间断运行:

kill -HUP `cat /usr/local/site/nginx/logs/nginx.pid`

      查看Nginx服务状态,确定正常之后我们来配置Nginx Proxy,查看Nginx端口

      二、配置nginx 反向代理服务器,反向代理服务器的配置如下;需要修改两个两个地方,在HTTP字段里面修改和Server字段中修改,在下图中只把需要添加的文件列出来即可。

upstream

      如下是HTTP负载均衡模块upstream 指定设置一群服务器,服务器可以指定不同的权重,默认为1。             Nginx支持5种方式的查询, 
      1、轮询 Nginx默认的查询方式 
      2、Weight 指定分配的轮询方式,根据后端服务器的性能来做权重,在此案例中我们使用这种方式来轮询的 
      3、Ip_hash 每个请求按照ip的hash结果分配,这样每个IP地址就可以固定的访问后端的一台服务器,解决了session的问题 
      4、Fair 第三方模块,这个原理是按照响应时间的优先来分配的, 
      5、url_hash    按照url的hash结果来分配请求,使每个url定向到同一个后端的服务器; 

upstream cluster { 
  server 192.168.100.238:80 weight=8 max_fails=2 fail_timeout=30s; 
  server 192.168.100.248:80 weight=8 max_fails=2 fail_timeout=30s; 
}   
     
server { 
 listen       80; 
server_name  localhost; 
       
location / { 
   root   html; 
   index  index.html index.htm; 
   proxy_pass http://cluster/;  //指定需要代理的URL, 
   proxy_redirect off;         //如果需要从后端打开location和Refresh字段,可以开启。 
   proxy_set_header X-Real-IP $remote_addr;  //允许将发送到后端的服务器请求重新定义或者增加一个字段,这个可以是变量也是文本组合。 
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  //联系下面PS中所写,在后端web中就算加上$http_x_Forwarded_for这条,也得不到用户的IP,所以在nginx反向代理添加Header头信息 X-Forwarded-For在配合后端服务器日志文件的$http_x_Forwarded_for这条就可以获得用户的IP地址了。 
   proxy_set_header Host $host; //首先说明 proxy_set_header 指令在向反向代理的后端Web服务器发起请求时添加指定的 Header头信息,后端web服务器有多个基于域名的虚拟主机时,通过头信息Host,用于指定请求的域名,这样后端web才能识别反向代理请求哪个虚拟主机处理。 
   proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 
   http_504 http_404; 服务器头部超时相应的各种状态 
 }  
}
} 

     配置完成,平滑重启Nginx服务:kill -HUP `cat /usr/local/site/nginx/logs/nginx.pid`

     三、测试,刷新测试能正常进行负载,可以根据自己的环境来对nginx proxy的设置轮询模式;

测试负载

 

       Nginx反向代理的原理优点:

       反向代理可以简单的理解为:代理服务器来接收internet上的服务器请求,然后将请求转发给内部的服务器上,然后将结果返回给internet上请求的客户端,所以代理服务器对外表现出来的只是一台服务器。反向代理服务器也称为Web服务器加速,针对web服务器提供加速功能。他作为代理服务器,并不针对浏览器用户,而是针对一台或者多台特定的web服务器。可以缓存web的页面,降低web服务器的访问量,从而来降低web服务器的负载,实施反向代理,只要将反向代理设备放置在一台或多台Web服务器前端即可。

       当互联网用户访问某个WEB服务器时,通过DNS服务器解析后的IP地址是代理服务器的IP地址,而非原始Web服务器的IP地址,这时代理服务器设备充当Web服务器,浏览器可以与它连接,无需再直接与Web服务器相连。因此,大量Web服务工作量被转载到反向代理服务上。不但能够很大程度上减轻web服务器的负担,提高访问速度,而且能够防止外部网主机直接和web服务器直接通信带来的安全隐患。

 

 

分享到:
评论

相关推荐

    Nginx负载均衡反向代理原理及学习手册安装部署等

    zip包括:Nginx学习手册.doc(系统讲解什么是nginx,原理等非常适合刚接触的小伙伴,图文并茂不过时) 、Nginx安装部署.doc(nginx的安装部署文档详细的图文说明,) HA负载均衡反向代理方案.vsd(一个简单的nginx涉及...

    用IIS配置反向代理实现方法(图文)

    配置反向代理的服务器:reveseProxServer iis应该是iis7及以上版本,才可以。 1、确定最终访问的网址:比如www.baidu.com  、www.jb51.net等等。  当然你也可以自己在targetServer部署自己的程序,在此为了示范,...

    nginx_tomcat_laya 图文说明1

    这个集成方案的优点在于,Nginx作为一个高效的反向代理,可以处理静态资源,减轻Tomcat的压力,同时通过负载均衡和缓存等功能提升整体性能。此外,通过Nginx,我们可以更方便地进行SSL/TLS加密,提供HTTPS服务,以及...

    Docker如何使用nginx搭建tomcat集群(图文详解)

    这个过程包括创建Docker容器、配置网络、管理卷、配置nginx反向代理等。 标签部分说明本文涉及的关键词包括Docker、nginx、Tomcat集群,这些关键词都分别在标题和描述中提及,它们是本文的核心内容。 部分具体内容...

    Windows Server 2016 Nginx 安装配置详细图文教程

    首先,Nginx是一个开源的高性能Web服务器和反向代理服务器,广泛用于提供静态内容服务、反向代理和负载均衡等功能。其特点在于轻量级、高性能,且支持高并发连接,非常适合用于搭建Web服务器和代理服务器。 在...

    nba比赛图文直播

    这可能涉及Nginx、Apache等反向代理服务器,以及云服务提供商提供的负载均衡解决方案。 8. **安全与权限管理**: 用户评球功能可能需要用户登录,这就涉及用户认证和授权。常见的实现方式有session管理、OAuth2.0...

    jt06日常笔记

    Nginx的主要功能包括负载均衡、反向代理以及邮件服务器。负载均衡策略有两种常见方式: 1. 轮询策略:这是Nginx默认的负载均衡方式。在`nginx.conf`中配置`upstream`节点,分配多个服务器(可为同一物理机的不同...

    实现学习比赛两不误的英雄联盟比赛图文直播软件。.zip

    10. **部署与运维**:可能涉及到Docker容器化部署,使用Nginx作为反向代理服务器,以及云服务如AWS或Google Cloud的使用。 通过研究这个项目源码,开发者不仅可以学习到上述各种技术的实践应用,还可以了解到如何将...

    腾讯云CentOS 6.6快速安装 Nginx服务器图文教程

    在实际环境中,你可能还需要配置Nginx以适应特定的应用场景,例如设置虚拟主机、SSL证书、反向代理、负载均衡等。此外,为了保证服务的稳定性和安全性,建议将Nginx配置为开机启动,并设置自动重启: ```bash sudo ...

    基于SSM框架的传统服饰文化平台体验的设计与实现.zip

    例如,使用Nginx作为反向代理和负载均衡器,Redis作为缓存系统提升性能,以及引入ELK(Elasticsearch、Logstash、Kibana)堆栈进行日志管理和分析。 综上所述,"基于SSM框架的传统服饰文化平台体验的设计与实现...

    Nginx简要安装配置方法图文教程

    Nginx是一款高性能的HTTP和反向代理服务器,常用于网站的负载均衡和静态资源处理。本教程将详细介绍Nginx在Linux环境下的简要安装和配置过程。 **一、安装所需文件** 在开始安装前,你需要下载以下四个必要的...

    LNMP编译安装之nginx安装配置方法图文教程

    Nginx作为轻量级的HTTP服务器,以其高效的反向代理、负载均衡和静态文件处理能力而受到广泛青睐。本教程将详细介绍在Linux系统上编译安装Nginx的步骤。 首先,我们要明确编译安装Nginx的原因。源码编译安装可以让...

    毕业设计基于Python+Flask的图文直播平台源码+详细使用说明.zip

    8. **部署与运行**:项目最终需要部署在服务器上,可能使用Gunicorn或uWSGI作为应用服务器,Nginx作为反向代理服务器,提供负载均衡和静态文件服务。同时,环境配置文件如`requirements.txt`记录了项目依赖的Python...

    Centos 通过 Nginx 和 vsftpd 构建图片服务器的教程(图文)

    - **扩展性**:支持负载均衡和反向代理功能,可以轻松扩展服务。 - **安全性**:内置了多种安全特性,如 SSL/TLS 加密支持等。 - **应用场景**: - **Web 服务器**:可以独立部署静态资源。 - **反向代理**:...

    WEB服务器的搭建及配置-图文.ppt.ppt

    2. **Nginx服务器搭建**:Nginx以其高效的反向代理和负载均衡能力而闻名。安装Nginx同样需要下载安装包,解压并编译安装,配置nginx.conf文件,包括设置监听端口、服务器块等。Nginx的一个特点是支持多进程模型,...

    去视频水印源码+前端 带文本安装教程

    3. **Nginx**:这是一款高性能的HTTP和反向代理服务器,常用于网站的负载均衡和静态资源处理,它的高并发能力和低内存占用使得它成为许多网站的首选web服务器。 4. **php5.6**:这是一种广泛使用的开源服务器端脚本...

    .Net Core 之 Ubuntu 14.04 部署过程(图文详解)

    如果需要更高级的设置,如负载均衡、SSL支持或反向代理,可以集成Nginx作为前端服务器,将HTTP请求转发到ASP.NET Core应用。 最后,需要注意的一个小问题是,在VS2015中发布时可能出现的乱码问题。这可能是由于编码...

Global site tag (gtag.js) - Google Analytics