Nginx反向代理、负载均衡的实现

概述:

    上篇介绍了Nginx作为web服务器的一些常用配置的说明,但是在实际生产环境中,Nginx更多是作为前端的负载均衡器,反代前端用户请求到后端真实的web服务器上,完成LNAMP的组合的方式存在。本篇就介绍一些Nginx作为http的反向代理和前端负载均衡调度器的一些常用配置,具体包括:

    1、ngx_http_proxy_module模块实现反代HTTP请求的配置

    2、ngx_http_headers_module模块实现nginx响应报文中的首部定义

    3、ngx_http_upstream_module模块实现nginx反代HTTP请求时的负载均衡

    4、ngx_stream_core_module模块实现nginx反代TCP/UDP协议请求

                   

第一章    ngx_http_proxy_module模块实现反代HTTP请求的配置

    

    1、nginx作为反向代理http请求时的相关配置选项

    nginx作为前端接受用户请求的服务器,接收到用户请求后,nginx自己构建请求报文,向后端真实服务器进行请求,后端服务器响应内容是响应给nginx,nginx再将接受到的响应报文根据需要重新封装后响应给真实用户

    nginx可以在反代用户请求到后端服务器时,将服务器响应的文件内容缓存到本地,下次用户再访问同样页面时,不用反代到后端服务器,而是直接利用本地的缓存进行响应,提升其效率

    proxy.png

    

    2、nginx反向代理示例

    blob.png

    <1> 配置好实验环境,在nginx反代服务器上安装nginx,在web1上安装LAMP,在web2上安装httpd

    blob.png

    blob.png    

    blob.png

    1477919031518126.png

    blob.png

    blob.png

    <2> 在web1和web2上提供测试页面,启动web服务,验证服务是否正常

    blob.png

    blob.png

    <3> 在nginx主机上配置反代

    blob.png

    blob.png

    <4> 在客户端上测试访问

    blob.png

    blob.png

              

    3、nginx反向代理时传递客户端IP给后端web服务器,实现日志中记录真实客户端IP的示例

   当通过nginx代理用户请求到httpd服务器时,httpd上访问日志记录的客户端IP全部是nginx的IP,这样不利于对日志进行
   分析统计,此时,我们就可以利用proxy_set_header指令,在nginx向后端发送请求报文时,在请求首部中添加进去一个真
   正客户端IP的首部

    blob.png

    在nginx主机上设置nginx请求后端web服务器的请求报文首部

    blob.png

    blob.png

    在后端httpd服务器上,修改日志记录的格式,让其记录请求首部中我们定义的首部,从而实现记录真实客户端IP

    blob.png

    测试访问,查看日志信息

    blob.png

          

    4、nginx反向代理http请求时,缓存后端响应内容的示例

    nginx的可以在反代用户请求到后端服务器时,将服务器响应的文件内容缓存到本地,下次用户再访问同样页面时,
    不用反代到后端服务器,而直接利用本地的缓存进行响应,提升其效率,缓存时key-value方式存储在内存中,key
    是可以指定的,一般是用户请求的URI,value值是相应URI对应的网页文件的特征码(如MD5码),具体的执行结果将
    保存在磁盘上的某个文件,该文件的文件名为文件内容的特征码
    
    在上述实验的基础上,实现将后端的资源缓存到nginx服务上

    blob.png

    blob.png

    blob.png

      

第二章    ngx_http_headers_module模块实现nginx响应报文中的首部定义

    1、http_headers模块的相关配置指令介绍

    http_headers模块可实现响应给客户端的报文中,添加自定义首部,或修改指定首部的值

    headers.png    

    2、添加nginx响应报文首部的的示例

    在上述实验的环境中,实现向nginx响应报文中添加首部,查看缓存是否命中

    blob.png

    blob.png

    

      

第三章    ngx_http_upstream_module模块实现nginx反代HTTP请求时的负载均衡

    1、upstream模块相关配置指令

    该模块可以实现将多台服务器定义为一个服务器组,然后定义一定的调度算法和属性,当nginx作为http反代服务器,或者fastcgi反代,uwsgi反代,scgi反代,memcached反代时,利用各个反代的指令,如:proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, and memcached_pass指令,将请求代理到定义的服务器组上,实现负载均衡调取器的作用

    upstream.png

    2、nginx实现反代用户请求到后端多台服务器时的负载均衡示例

    在上述实验的基础上,实验将请求负载均衡到后端的两台服务器

    blob.png

    blob.png

    blob.png

    blob.png    

    blob.png

    blob.png   

    blob.png

第四章    ngx_stream_core_module模块实现nginx反代TCP/UDP协议请求

    1、stream模块的相关配置指令

    该模块可以实现nginx基于tcp或udp协议进行反代,相当于可以反向代理tcp或udp传输层相关应用,因此可以将nginx模拟成为传输层的反代的调度器(类似LVS)

    stream.png

    2、nginx配置成为后端服务器ssh服务的反向代理示例

    blob.png

    blob.png

    blob.png

原创文章,作者:M20-1倪文超,如若转载,请注明出处:http://www.178linux.com/56476

(1)
M20-1倪文超M20-1倪文超
上一篇 2016-11-01 09:10
下一篇 2016-11-01 10:08

相关推荐

  • linux多网卡绑定

    为了增加网络牢固性,linux服务器通过多块网卡来实现网卡冗余或链路聚合、负载均衡的技术。网卡绑定mode共有七种(0~6) bond0、bond1、bond2、bond3、bond4、bond5、bond6常用的有三种mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援…

    系统运维 2016-06-23
  • ◆战前宣言

    从 今 天 开 始, 到 以 后 的 很 久,我 要 努 力,努 力,努 力 的 用 尽 全 力 地 学 好 Linux。 我 知 道,这 起 码 需 要 很 长 时 间 和 汗 水,但 我 坚 信,付 出 总 是 会 有 回 报 的~ 要记住:比你优秀的人都在努力,你还在彷徨什么? 最后借用一下火影忍者中李…

    Linux干货 2016-10-24
  • linux系统初识

          在完成centos7安装后,使用root登陆,查看了解当前根目录。由于root权限高,建议新增用户。执行useradd name命令。登陆后查看是否当前用户用whoami命令。     使用df命令了解系统分区情况以及显示内存free命令。   &…

    2017-07-16
  • sed– 用于筛选和转换文本的流编辑器

    sed 用于筛选和转换文本的流编辑器命令格式:sed [OPTION] {script} file选项       -n, –quiet, –silent 抑制模式空间的自动打印  echo -e “abc\ndef” | sed ‘p’ #输出 abc # abc # def # d…

    Linux干货 2017-08-15
  • 计算机的组成及功能

    计算机的组成及功能 计算机的组成 计算机的组成,简单地来说,包含硬件和软件两部分,两者相辅相成,缺一不可。在计算机网络发展的今天,网络也已成为计算机不可或缺的一部分。 计算机硬件 可以分为如下5个部分: 控制器 负责对程序的控制信息进行分析,控制并协调输入、输出操作或内存访问,如CPU 运算器 负责数据的算术运算和逻辑运算,如C…

    Linux干货 2016-10-29
  • liunx学习第一天知识点-基础知识

    一 计算机组成 1. 冯·诺依曼体系:     1946年数学家冯·诺依曼于提出计算机由五大部分组成:运算器、控制器、存储器、输入设备、输出设备 2. 摩尔定律:     戈登·摩尔于1965年提出来当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,…

    Linux干货 2016-07-27