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

代理和反向代理

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

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

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

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

特性:

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

反向代理服务配置

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

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

负载均衡

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

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

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

2.有负载均衡的 web 架构

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

负载均衡的配置

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

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

一般轮询配置

  1. server{
  2. listen 80;
  3. server_name test.test;
  4. location / {
  5. proxy_pass http://web_server; #反向代理
  6. }
  7. }
  8. #配置负载均衡服务器组
  9. upstream web_server {
  10. server 192.168.78.128;
  11. server 192.168.78.129;
  12. }

加权轮询配置

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

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

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

ip_hash 配置

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

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

第三方模块(fair)

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

配置 fair 的负载均衡

  1. server{
  2. listen 80;
  3. server_name test.test;
  4. location / {
  5. proxy_pass http://web_server
  6. }
  7. }
  8. upstream web_server{
  9. server 192.168.78.128;
  10. server 192.168.78.132;
  11. fair;     #使用fair
  12. }

Nginx代理与反向代理、负载均衡实践的更多相关文章

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

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

  2. nginx详解反向代理、负载均衡、LNMP架构上线动态网站(week4_day1_part1)-技术流ken

    nginx介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理 ...

  3. Nginx 部署、反向代理配置、负载均衡

    Nginx 部署.反向代理配置.负载均衡 最近我们的angular项目部署,我们采用的的是Nginx,下面对Nginx做一个简单的介绍. 为什么选择Nginx 轻:相比于Apache,同样的web服务 ...

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

    Nginx配置详解 nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行 ...

  5. Nginx特性验证-反向代理/负载均衡/页面缓存/URL重定向

    原文发表于cu:2016-08-25 参考文档: Nginx 反向代理.负载均衡.页面缓存.URL重写等:http://freeloda.blog.51cto.com/2033581/1288553 ...

  6. Nginx(http协议代理 搭建虚拟主机 服务的反向代理 在反向代理中配置集群的负载均衡)

    Nginx 简介 Nginx (engine x) 是一个高性能的 HTTP 和反向代理服务.Nginx 是由伊戈尔·赛索耶夫为俄罗斯访问量第二的 Rambler.ru 站点(俄文:Рамблер)开 ...

  7. nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件

    前言一.nginx简介1. 什么是 nginx 和可以做什么事情Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50 ...

  8. [转帖]nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件

    nginx学习,看这一篇就够了:下载.安装.使用:正向代理.反向代理.负载均衡.常用命令和配置文件 2019-10-09 15:53:47 冯insist 阅读数 7285 文章标签: nginx学习 ...

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

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

随机推荐

  1. WPS for linux 中不能切换到中文输入法

    转载自:http://blog.sciencenet.cn/blog-200199-1032795.html 尽管安装有中文输入法,wps有时仍然不能切换到中文输入法,此问题解决方案如下: 根账户下打 ...

  2. dp(01背包问题)

    且说上一周的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励的时刻了! 小Ho现在手上有M张奖券,而奖品区有N件奖品,分别标号为1到N,其中第i件奖品需要need( ...

  3. Mint-Linux【最佳】【快速】安装微信、企业微信、TIM、QQ等软件

    废话不多说 直接上教程 注意看 方式一.在线安装 在本地目录下.如 /home/root/Document 直接使用在线安装脚本,安装最新的Release版本: wget -qO- https://r ...

  4. Javascript 数组的一些操作

    (1) shift  删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift(); //a:[2,3,4, ...

  5. 手模手配置Eslint,看懂脚手架中的Eslint

    使用ESLint前:eslint是干嘛的,我这样写有什么问题,怎么还报错了,太麻烦想去掉这个插件,脚手架中关于eslint文件里的配置是什么意思?怎么设置配置项和规则达到自己想要的检测效果呢?怎么集成 ...

  6. 2018-11-3-git-分支改名

    title author date CreateTime categories git 分支改名 lindexi 2018-11-3 12:49:9 +0800 2018-2-13 17:23:3 + ...

  7. Zabbix学习笔记(yum源安装)

    Zabbix学习笔记(yum源安装) 链接:https://pan.baidu.com/s/19RXhumkB-ulpI4BGOa5b_A 提取码:115h 复制这段内容后打开百度网盘手机App,操作 ...

  8. k8s阅读笔记1-云原生

    前言 阅读书籍地址https://rootsongjc.gitbooks.io/kubernetes-handbook/content/cloud-native/cloud-native-defini ...

  9. Swagger添加文件上传测试

    先上对比图 图一无法选择文件,图二可以选择文件 图一 图二 添加过滤器 public class SwaggerFileUploadFilter : IOperationFilter { /// &l ...

  10. 如何在Ubuntu 18.04上安装Apache Web服务器

    一. apt库安装 1.在终端输入更新检查命令,sudo apt-get update 2. 在更新完成后(如果不想检查更新,也可直接输入此步)输入:sudo apt-get install apac ...