Nginx代理与反向代理、负载均衡实

栏目: 服务器 · Nginx · 发布时间: 4年前

内容简介:通过 Nginx 提供的反向代理和负载均衡功能,可以合理的完成业务的分配,提高网站的处理能力;同时利用缓存功能,还可以将不需要实时更新的动态页面输出结果,转化为静态网页形成缓存,从而提高网站的响应速度。位于客户端和目标服务器之间,起到一个中转的作用。其实就是客户端想访问目标服务器,但是因为某些原因不能够直接访问,则把请求和目标服务器发给代理服务器,代理服务器再去请求目标服务器,把返回的响应结果返回给客户端。

通过 Nginx 提供的反向代理和负载均衡功能,可以合理的完成业务的分配,提高网站的处理能力;同时利用缓存功能,还可以将不需要实时更新的动态页面输出结果,转化为静态网页形成缓存,从而提高网站的响应速度。

代理和反向代理

代理(正向代理,目标服务器不知道谁在访问)

位于客户端和目标服务器之间,起到一个中转的作用。其实就是客户端想访问目标服务器,但是因为某些原因不能够直接访问,则把请求和目标服务器发给代理服务器,代理服务器再去请求目标服务器,把返回的响应结果返回给客户端。

Nginx代理与反向代理、负载均衡实

反向代理(用户实际并不知道最终服务器,只是访问一个反向代理服务器而已)

客户端会把反向代理服务器当成目标服务器,向反向代理服务器发送请求后,反向代理服务器再请求内部的后端服务器,把得到的响应结果返回给客户端。

Nginx代理与反向代理、负载均衡实

Nginx代理与反向代理、负载均衡实

特性:

  • 安全性。反向代理具有安全性。能隐藏真实的内部服务器。
  • 功能性。正向代理主要用途是为防火墙内的局域网用户提供访问外网的途径。反向代理主要用途是将防火墙内的服务器提供给外边的用户访问,同时也可以为多个后端服务器提供负载均衡功能、缓存功能等。

反向代理服务配置

在 Nginx 配置文件中的 location 块中,这是 proxy_pass 指令。

server{ 
listen 80; 
  server_name test.test; 
  #将本机接收到的test.test的请求全部转发到另外一台服务器192.168.78.128 
  location /{ 
    proxy_pass http://192.168.78.128;  
    #下面是其他辅助指令 
    proxy_set_header Host $host; #更改来自客户端的请求头信息 
    proxy_set_header X-Real_IP $remote_addr;    #用户真实访问ip 
    proxy_connect_timeout 2; #配置nginx与后端服务器建立连接的超时时间 
    proxy_read_timeout 2; #配置nginx向后端发出read请求的等待响应超时时间 
    proxy_send_timeout 2; #配置nginx向后端服务器发出write请求的等待响应超时时间 
    proxy_redirect http://www.baidu.com; #用于修改后端服务器返回的响应头中的Location和Refresh 
  } 
} 

负载均衡

负载均衡(load balance):就是将负载分摊到多个操作单元上执行,从而提高服务的可用性和响应速度。

1.一个没有负载均衡的 web 架构如下图:

Nginx代理与反向代理、负载均衡实

用户直接连接服务器,这个时候如果这台服务器挂了,那么就整个网站挂了。

2.有负载均衡的 web 架构

Nginx代理与反向代理、负载均衡实

用户不直接访问后端服务器,而是访问负载均衡服务器,由负载均衡服务器再次转发到后端服务器。如果这个时候有一台后端服务器挂掉了,那么负载均衡服务器会剔除掉它,将后续请求都转发到好的那台,这样就不影响网站的正常运行。这个时候我们也需要考虑负载均衡服务器会不会挂掉,那就引入第二个负载均衡服务器来缓解一下。

Nginx代理与反向代理、负载均衡实

负载均衡的配置

通过配置负载均衡服务器的 Nginx 中的 upstream 指令可以实现。

不同负载均衡配置的特点如下图所示:

Nginx代理与反向代理、负载均衡实

一般轮询配置

server{ 
    listen 80; 
  server_name test.test; 
  location / { 
    proxy_pass http://web_server; #反向代理 
  } 
} 
#配置负载均衡服务器组 
upstream web_server { 
    server 192.168.78.128; 
  server 192.168.78.129; 
} 

加权轮询配置

#配置负载均衡服务器组 
upstream web_server { 
    server 192.168.78.128 weight=1; 
  server 192.168.78.129 weight=3; 
} 

这里面的权值总和为一个循环,这里以 4 次为一个循环,那么就是每四次请求中,三次会被分派到 129 这个服务器,一次分配到 128,但是具体三次并不会顺序执行,而是按照算法分散执行。 我们也可以设置每台 web 服务器在负载均衡调度中的状态。

upstream web_server{ 
    server 192.168.78.128 weight=1 max_fails=1 fail_timeout=2; #允许请求失败次数,在请求max_fail次数失败后,暂停服务的时间 
  server 192.168.78.200 backup; #预留的备份服务器 
  server 192.168.78.33 down; #当前服务器不参与负载均衡 
} 

ip_hash 配置

upstream web_server{ 
    ip_hash; 
  server 192.168.78.120; 
  server 192.168.78.123; 
  server 192.168.78.33 down; #如果这台服务器宕机,则用down表示当前服务器暂不参与负载均衡 
} 

使用 ip_hash 的时候,不能使用 weight 和 backup。

第三方模块(fair)

安装fair模块的步骤略过...

配置 fair 的负载均衡

server{ 
    listen 80; 
  server_name test.test; 
  location / { 
    proxy_pass http://web_server 
  } 
} 
 
upstream web_server{ 
    server 192.168.78.128; 
  server 192.168.78.132; 
  fair;     #使用fair 
} 

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

黑客秘笈

黑客秘笈

[美]彼得·基姆 / 徐文博、成明遥 / 人民邮电出版社 / 2015-7-1 / 45.00

所谓的渗透测试,就是借助各种漏洞扫描工具,通过模拟黑客的攻击方法,来对网络安全进行评估。 本书采用大量真实案例和集邮帮助的建议讲解了在渗透测试期间会面临的一些障碍,以及相应的解决方法。本书共分为10章,其内容涵盖了本书所涉的攻击机器/工具的安装配置,网络扫描,漏洞利用,人工地查找和搜索Web应用程序的漏洞,攻陷系统后如何获取更重要的信息,社工方面的技巧,物理访问攻击,规避杀毒软件的方法,破解......一起来看看 《黑客秘笈》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

html转js在线工具
html转js在线工具

html转js在线工具