代理服务可以简单的分为正向代理和反向代理

正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标web服务器的HTTP请求先发送到代理服务器上,然后由代理服务器去访问web服务器,并将web服务器的response传回到客户端;
.
反向代理: 与正向代理相反,如果局域网向Internet提供资源,并让Internet上的其他用户可以访问局域网内资源,也可以设置一个代理服务器,它提供的服务就是反向代理,反向代理服务器接收来自Internet的连接,然后将请求转发给内部网络上的服务器,并将response传回给Internet上请求连接的客户端;

反向代理作用

1)保护网站安全:任何来自Internet的请求都必须要先经过代理服务器:

2)通过配置缓存功能加速web请求:可以缓存真实web服务器上的某些静态资源,减轻真实web服务器的负载压力:


3)实现负载均衡:充当负载均衡服务器均衡地分发请求,平衡集群中各个服务器的负载压力:

什么是nginx

1.nginx简介
nginx是一款轻量级的网页服务器,反向代理器以及电子邮件代理服务器。因为它的稳定性、丰富的功能集、示例配置文件和低系统资源消耗而闻名。nginx(发音同engin x),它是俄罗斯程序员lgor Sysoev所开发的。起初是供俄国超大型的门户网站及搜索引擎rambler(俄语:Рамблер)使用。此软件BSD-like协议下发行,可以运行在UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及Micosoft Windows等系统中运行。
.
2.nginx的核心特点
(1)跨平台:nginx可以在大多数OS编译运行,而且也有Windows的版本;
(2)配置简单:非常容易上手
(3)非阻塞、高并发连接:官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数(这得益于nginx使用了epoll模型)

注:
对于一个web服务器来说,首先看一个请求的基本过程:建立连接-接收数据-发送数据。在系统底层看来:上述过程在系统底层就是读写事件。
如果采用阻塞调用的方式,当读写事件没有准备好时,那么就和只能等待,当前线程被挂起等事件准备好了才能进行读写事件
如果采用非阻塞调用的方式,事件马上返回,告诉你事件还没准备好,过会再来吧。过一会,再来检查一下事件,直到事件准备好了为止,在这期间你就可以去先做其他事情,然后再来看看事件好了没。虽然不阻塞了但你也需要时不时来检查一下事件的状态,你可以做更多的事情了,但带来的开销也不小。非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。

3.事件驱动
通信机制采用epoll模型,支持更大的并发连接
非阻塞通过不断检查事件状态来判断是否进行读写操作,这样带来的开销很大,因此就有了异步阻塞的时间处理机制。这种机制让你可以同时监控多个事件,调用他们是非阻塞的,但是可以设置超时事件,在超时时间之内,如果有事件准备好了,就返回。这种机制解决了上面阻塞调用与非阻塞调用的两个问题。
以epoll模型为例:当事件没有准备好时,就放入epoll(队列)里面。如果有事件准备好了,那么就去处理:当事件没有准备好时,才在epoll里等着。这样,我们就可以同时处理大量的并发了,当然,这里的并发请求,是指未处理完的请求。线程只有一个,所以能同时处理的请求当然只有一个了,只是在请求之间不断进行切换而已,切换也是因为异步事件未准备好,而主动让出的。这里的切换是没有任何代价的,你可以理解为循环处理多个准备好的事件。
多线程方式相比,这种事件处理方式是有很大优势的,不需要创建多线程,每个请求占用的内存也很少,没有上下文切换,事件处理非常的轻量级,并发数再多也不会导致无谓的资源浪费(上下文切换)。对于Apache服务器,每个请求会独占一个工作线程,当并发数上到几千时,就同时有几千的线程在处理请求了。这对于操作系统来说,是个不小的挑战:因为线程带来的内存占用非常大,线程的上下文切换带来的cpu开销很大,性能自然就上不去,导致在高并发场景下性能下降严重。
总结:通过异步阻塞的事件处理机制,nginx实现由进程循环处理多个准备好的事件,从而实现高并发和轻量级
.
4.master\worker结构
一个master进程,生成一个或多个worker进程。


master-worker设计模式主要包含两个主要组件master和worker,master维护者worker队列,将请求下发到多个worker并行执行,worker主要进行实际逻辑计算,并将结果返回给master
nginx采用这种进程模型的好处:可以让互相之间不会影响,一个进程退出后,其他进程还在工作,服务不会中断,master进程则很快重新启动新的worker进程。当然,worker进程的异常退出肯定是程序有bug了,异常退出会导致当前worker上所有的请求失败,不够不会影响到所有请求,所以降低了风险

5.内存消耗小
处理大并发的请求内存消耗非常小。在3万并发连接下,开启的10个nginx进程才消耗150M内存
.
6.内置健康检查功能
如果nginx代理的后端某台web服务器宕机了,并不会影响前端访问
.
7.节省带宽
支持GZIP压缩,可以添加浏览器本地缓存的header头
.
8.稳定性高
用于反向代理,宕机的概率微乎其微

NGINX做反向代理缓存服务器原理相关推荐

  1. 【推荐】如何用 Nginx 构建反向代理缓存服务器?

    作者:一盏烛光,贤牛特邀工程师. 防伪码:曾经沧海难为水,除却巫山不是云. 代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对 Internet 的连接请求(如×××/NAT), ...

  2. Nginx做反向代理和负载均衡时“X-Forwarded-For”信息头的处理

    转载自:https://blog.51cto.com/wjw7702/1150225 一.概述 如今利用nginx做反向代理和负载均衡的实例已经很多了,针对不同的应用场合,还有很多需要注意的地方,本文 ...

  3. nginx配置反向代理缓存

    说明 最近运维一个网站里面含有不经常变化的小图片,而每次请求都需要调用file接口获取不太合适.所以就想利用nginx的反向代理缓存来减轻服务接口的请求压力. 工作原理 Nginx反向代理缓存,当客户 ...

  4. 小程序nginx做反向代理_NGINX作为节点或Angular应用程序的反向代理

    小程序nginx做反向代理 A reverse proxy is a server that retrieves resources for clients from one or more upst ...

  5. 利用 Nginx 做反向代理解决微信小程序业务域名限制问题

    [查看原文] https://fyh.me/2018/07/12/nginx-docker-miniprogram/ 最近做了一个世界杯比赛日程的小程序,只有查看日程的功能,所以很快就发布上线了.后边 ...

  6. squid 3 反向代理 缓存服务器 安装配置精华指南 by lbj

    squid-3.0.STABLE21 安装配置 by lbj 作用:作为反向代理/缓存服务器 系统:redhat linux 企业版 5.4 linux 要有gcc编译器,使用squid-3.0.ST ...

  7. nginx反向代理缓存服务器构建

    博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 代理服务可简单的分为正向代理和反向代理: ...

  8. Nginx高性能反向代理web服务器

    基础 Nginx简介 背景介绍 Nginx("engine x")一个具有高性能的[HTTP]和[反向代理]的[WEB服务器],同时也是一个[POP3/SMTP/IMAP代理服务器 ...

  9. nginx做反向代理时出现302错误

    现象:nginx在使用非80端口做反向代理时,浏览器访问发现返回302错误 详细现象如下: 浏览器请求登录页: 输入账号密码点击登录: 很明显登录后跳转的地址少了端口号. 原因:proxy.conf文 ...

最新文章

  1. 阿里2022“研究型实习生”计划公布,开放200多个科研选题
  2. 容器 PaaS 新技术架构下的运维实践
  3. Linux命令详解----iostat
  4. DataGrid 或 DataView 中删除项时告知是否删除
  5. HTML5开发 桌面提醒功能
  6. Java培训分享:零基础怎么学习Java?
  7. 【转】用Fiddler做抓包分析详解
  8. SM4 ECB加密模式 数据对比试验论证
  9. AI 时代,为什么程序员很贵?
  10. nginx并发性能测试
  11. HTML5 audio
  12. 九度oj 题目1028:继续畅通工程
  13. Scala中的“=”和“-”
  14. 分布式 | log4j2 漏洞修复方案
  15. 问题 J: Frosting on the Cake
  16. 使用百度地图AndroidSDK
  17. (java)socket全双工长连接通信实例
  18. 消息队列的消息积压解决办法
  19. 相比于D-SUB接口DVI接口的优点是什么
  20. solidworks装配体改为柔性_SolidWorks|链条、皮带的绘制及其动画演示

热门文章

  1. java算法排列式_JAVA 蓝桥杯算法 全排列 背公式即可
  2. IPv6- TC实现IPv6流量限速测试详情
  3. 【两个队列模拟栈】——栈与队列
  4. envi查看影像中指定像素的经纬度
  5. springboot根据cron获取任务执行上次和下次执行时间
  6. 【2021考研】政治做题策略
  7. Windows XP 修复DirectPlay8 错误
  8. 相机与IMU标定教程
  9. YTU 1006 Hero In Maze
  10. adams样条驱动_adams驱动中如何施加 正弦函数