说到反向代理,首先先说一下反向代理的概念

反向代理(Reverse Proxy)方式是指以代理服务器来接受客户端的连接请求,然后将请求转发给网络上的web服务器(可能是apache,nginx,tomcat,iis等)并将web服务器上得到的结果返回给请求连接的客户端,此时代理服务器对外就表现为一个服务器。

nginx是一款轻量级的网页服务器/反向代理以及电子邮件代理服务器。因它的稳定性,和丰富的功能集,示例配置文件和低系统资源的消耗而文明。

nginx的核心特点

①跨平台:nginx可以在大多数OS编译运行,而且也有windows的版本

②部署:配置简单,容易上手

③非阻塞。高并发连接:官方测试能够支撑5万并发连接,在实际生产环境能跑到2到3万并发连接数。(这屈居于nginx使用的最新epoll模型);非阻塞调用指在不能立刻得到结果之前,该调用不阻塞当前线程。(就比如自己的妈妈在做饭,在饭做好的期间,你可以干任何事情,而不用干等着饭菜做好)

④事件驱动:nginx通信采用epoll模型,支持更大的并发连接。非阻塞通过不断检查时间的状态来判断是否进行读写操作,这样带来的开销很大,因此就有了异步非阻塞的事件处理机制。这种机制让你可以同时监控多个事件,调用他们是非阻塞的,但是可以设置超时时间,在超时时间之内,如果有事件准备好了,就返回。这种机制解决了上面阻塞调用与非阻塞调用的两个问题

以epoll模型为例:当事件没有准备号时,就放入epoll队列里面,如果有事件准备好了,那么就去处理;当事件没有准备好时,在epoll队列里等待。这样就实现了nginx处理大量并发的能力,这里并发请求是指未处理完的请求。线程只有一个,所以同时能处理请求的当然也只有一个,只是在请求之间进行不断地切换而已,切换也是因为异步事件未准备好,而主动让出的,可以理解为循环处理准备好的事件。所以通过异步非阻塞的事件处理机制,nginx实现由进程循环处理多个准备好的事件,从而实现高并发和轻量级。

⑤Master/Worker结构:一个master进程,生成一个或多个worker进程。worker的进程的主要时监控作用,worker进程是真正处理请求的进程,进程之间不会互相影响,一个进程退出后,其他进程还在工作,服务不会中断,master进程则会很快重新启动新的worker进程。

⑥内存消耗小:处理大并发的请求内存消耗非常小。在3万并发连接下,开启的10个nginx程序才消耗150M内存(15M * 10)

⑦内置健康检查功能:如果nginx代理的后端的某台web服务器宕机了,不会影响前端访问。

⑧节省宽带:支持GZIP压缩,可以添加浏览器本地缓存的HEADER头。

⑨稳定性高:用于反向代理,宕机的概率微乎其微。

nginx反向代理服务器---拓补图

nginx的反向代理的优势,特点于原理(一)的更多相关文章

  1. nginx 实现反向代理、负载均衡、高可用

    转自:https://blog.csdn.net/zy1471162851/article/details/91795712 tip:   nginx是一款高性能的http 服务器/反向代理服务器及电 ...

  2. Windos环境用Nginx配置反向代理和负载均衡

    Windos环境用Nginx配置反向代理和负载均衡 引言:在前后端分离架构下,难免会遇到跨域问题.目前的解决方案大致有JSONP,反向代理,CORS这三种方式.JSONP兼容性良好,最大的缺点是只支持 ...

  3. 在ubuntu上面配置nginx实现反向代理和负载均衡

    上一篇文章(http://www.cnblogs.com/chenxizhang/p/4684260.html),我做了一个实验,就是利用Visual Studio,基于Nancy框架,开发了一个自托 ...

  4. nginx的反向代理和负载均衡的一个总结

    之前一直觉的nginx的反向代理和负载均衡很厉害的样子,最近有机会接触了一下公司的这方面的技术,发现技术就是一张窗户纸呀,捅破了啥都明白了! 接下来先看一下nginx的反向代理: 简单的来说就是ngi ...

  5. nginx做反向代理并防盗链

    nginx做反向代理真的非常简单,只需设置location+proxy_pass即可. 防盗链配置有些复杂,需要注意的地方: 在防盗链的location中需要再设置一下proxy_pass(在这里走了 ...

  6. nginx设置反向代理后,页面上的js css文件无法加载

    问题现象: nginx配置反向代理后,网页可以正常访问,但是页面上的js css文件无法加载,页面样式乱了. (1)nginx配置如下: (2)域名访问:js css文件无法加载: (3)IP访问:j ...

  7. 用nginx做反向代理来访问防外链图片

    用nginx做反向代理来访问防外链图片 女儿的博客从新浪搬到wordpress后,发现原来博客上链接的新浪相册的图片都不能访问了,一年的博客内容,一个个去重新上传图片,修正链接也是个大工程.还是得先想 ...

  8. Nginx 笔记与总结(15)nginx 实现反向代理 ( nginx + apache 动静分离)

    在 nginx 中,proxy 用来实现反向代理,upstream 用来实现负载均衡. 例如有两台服务器,nginx 服务器作为代理服务器,执行 .html 文件,apache 服务器上执行 .php ...

  9. 【Nginx】使用Nginx做反向代理时,关于被代理服务器相应的超时设置

    > 参考的优秀文章 Module ngx_http_proxy_module > 设置等待被代理服务器的最大响应时间 使用Nginx做反向代理时,因被代理服务器因业务确实复杂,需时较久,往 ...

随机推荐

  1. c语言求素数以及改进算法

    代码需要使用c99编译 #include <stdio.h> #include <stdlib.h> #include <math.h> //是否为素数 //从2到 ...

  2. Swift3.0项目学习: 创建撰写按钮

    import UIKit class PSMainViewController: UITabBarController { override func viewDidLoad() { super.vi ...

  3. redis 3.2.5单机版安装、使用、systemctl管理Redis启动、停止、开机启动

    参照地址 http://www.mamicode.com/info-detail-1488639.html 前提:防火墙安装,然后打开端口,设置开机启动 一.redis源码安装 [root@host- ...

  4. Linux 用户管理 与 文件权限

    Linux 用户管理 与 文件权限 用户组操作 1.groupadd命令 groupadd [-g -o] gid group 各个选项具体含义如下: -g:指定新建用户组的GID号,该GID号必须唯 ...

  5. 禁止crontab -r清空定时任务列表误操作

    关于crontab 1.附件cron.sh放/usr/bin目录下面 2.在/etc/bashrc文件末尾添加 alias crontab='/usr/bin/cron.sh' 或者在当前root用户 ...

  6. USACO 1.1 Greedy Gift Givers

    模拟. 如果用$map$的话,会很好写. 如果你不会$map$的话,在此小广告:https://blog.csdn.net/CQBZLYTina/article/details/80063739 /* ...

  7. ucloud-monitor

    创建报警模板: 可以从现有模板导入: 设定指标: #通知人管理,可以设置报警短信通知人: #给主机绑定告警模板: 勾选要绑定的主机 点设置: #选择要添加的告警模板

  8. Linux常用安装配置

    一.创建.删除.分组 创建用户 命令:useradd  用户名 或    adduser 用户名 注意:只有root用户才能创建新用户 例如,创建一个名为zhangsan的用户 使用passwd命令为 ...

  9. 01-Hadoop概述及基础环境搭建

    1 hadoop概述 1.1 为什么会有大数据处理 传统模式已经满足不了大数据的增长 1)存储问题 传统数据库:存储亿级别的数据,需要高性能的服务器:并且解决不了本质问题:只能存结构化数据 大数据存储 ...

  10. 【LOJ】#3121. 「CTS2019 | CTSC2019」无处安放

    第一次有耐心去研究一道题答-- 以前看到题答要么扔要么就水能简单手玩出来的 1 2可以手玩出来,快乐! 4呢发现3 3比较格路,就把3 3都配了,一边带个4的除了4 4都塞满这么放进去,然后把一边带2 ...