Nginx浅析

  • Nginx是什么

    1. 总的来说,Nginx其实就是一个和apache类似的服务器软件。 Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器,并在一个BSD-like协议下发行。由俄罗斯的程序设计师lgorSysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

    2. Nginx是一个高性能的静态HTTP服务器和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。首先,Nginx是一个高性能的HTTP服务器。可以将服务器上的静态文件(比如HTML、图片等)通过HTTP协议展现给客户端。

    3. Nginx相较于Apache\lighttpd具有占有内存少,稳定性高等优势,并且依靠并发能力强,丰富的模块库以及友好灵活的配置而闻名。在Linux操作系统下,nginx使用epoll事件模型,得益于此,nginx在Linux操作系统下效率相当高。同时Nginx在OpenBSD或FreeBSD操作系统上采用类似于Epoll的高效事件模型kqueue。

  • Nginx的应用场景

    1. HTTP服务器。Nginx是一个静态HTTP服务器,可以独立提供HTTP服务,可以用作网页静态服务器

    2. 虚拟主机。Ngnix可以实现一台服务器虚拟出多个网站

    3. 反向代理,负载均衡。当网站的访问量达到一定程度时,单台服务器不能满足用户的请求时,就需要多台服务器集群,可以使用Ngnix做反向代理,通过Ngnix将用户的请求分发给多台服务器,这样,多台服务器就可以平均分担负载,从而实现负载均衡。

  • Nginx的作用

    1. Nginx作为web服务器的一个重要的功能就是反向代理,当然也可以使用Nginx配置正向代理。网站管理员可以在服务器和客户端中间层加上一层Nginx服务器,客户端请求Nginx服务器,Nginx请求应用服务器,然后将结果返回给客户端,此时Nginx就是反向代理服务器。

    2. 当网站的访问量非常大时,服务器的压力也会非常大,这个时候就需要用到服务器集群了。通过中间层的Nginx服务器,将大量的用户请求分配给多台服务器,实现负载均衡。同时带来的好处是,如果一台服务器出现问题,只要其他服务器正常运行,就不会影响用户的使用。

    3. 有的网站访问量大,需要负载均衡,然而并不是所有的网站访问量都非常大,有的网站访问量小,需要节省成本,将多个网站部署在同一台服务器上,这时可以使用Nginx服务器虚拟出多个多个域名,用户通过不同的域名访问不同的网站,实现虚拟主机的作用

    4. Nginx服务器本身不支持PHP等语言,但是它可以通过FastCGI来将让语言编译器或解释器或框架处理

  • Nginx和Apache的区别和共同点

    • 共同点:

      1. 都是HTTP服务器

      2. 功能上都采用模块化结构设计

      3. 都支持通用的语言接口,比如PHP、Python、Perl等等

      4. 都支持正向代理、反向代理、虚拟主机、URL重写、压缩传输、sssL加密传输等

    • 不同点:

      1. Apache处理请求速度很慢,占用很多内存资源

      2. 功能上,Apache所有模块支持动静态编译,Nginx的模块都是静态编译的

      3. 对FastCGI的支持:Apache不能很好的支持,Nginx支持的非常好

      4. 处理连接方式上:Nginx支持epoll,Apache不支持

  • Nginx的优势

    1. 作为web服务器,Nginx处理静态文件、索引文件,自动索引的效率非常高

    2. 作为代理服务器,Nginx可以实现无缓存的反向代理加速,提高网站运行速度

    3. 作为负载均衡服务器,Nginx既可以实现在内部直接支持Rails和PHP,也可以支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡

    4. 在性能方面,Nginx是专门为性能优化开发的,非常注重效率。它采用内核Poll模型,可以支持更多的并发连接,最大支持对5万个并发连接的相应,而只用占用很低的内存资源

    5. 在稳定性方面,Nginx采用了分阶段资源分配技术,使得CPU和内部的占用率非常低。Nginx保持了1万个没有活动的连接,而这些连接只占用了2.5M的内存,因此。类似DOS这样的攻击对于Nginx来说基本上是没有任何作用的

    6. 在高可用性方面,Nginx支持热部署,启动速度特别迅速,因此可以不间断服务器的情况下,进行版本或配置的升级,Nginx几乎可以做到不间断运行。Nginx采用了一些os提供的最新特性如sendfile(Linux2.2+),accept-filter(FreeBSD4.1+),TCP_DEFER_ACCEPT(Linux 2.4+)的支持,从而大大提高了性能。

  • 正向代理和反向代理的区别

    • 反向代理

      客户端(用户A)向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。而客户端始终任务它访问的事原始服务器B而不是服务器Z。由于防火墙作用,只允许服务器Z进出,防火墙和反向代理共同作用保护了资源服务器B。反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。

      反向代理的用途:将防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡或为后端较慢的服务器提供缓冲服务。

    • 正向代理

      正向代理是一个位于客户端A和原始服务器(服务器B)之间的服务器(代理服务器Z),为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代理服务器Z向服务器B转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。 正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。

      正向代理的用途:在防火墙内的局域网客户端提供访问Internet的途径。还可以使用缓冲特性减少网络使用率。

Nginx浅析的更多相关文章

  1. 浅析Apache/Tomcat/JBOSS/Nginx之区别

    浅析Apache/Tomcat/JBOSS/Nginx服务器之区别 一.Apache和Tomcat的区别 Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上, ...

  2. 浅析nginx的负载均衡

    Nginx 的 HttpUpstreamModule 提供对后端(backend)服务器的简单负载均衡.一个最简单的 upstream 写法如下: upstream backend { server ...

  3. nginx的proxy_pass路径转发规则浅析(末尾/问题)

    源地址 : https://www.zifangsky.cn/917.html 一 location匹配路径末尾没有 / 此时proxy_pass后面的路径必须拼接location的路径:   1 2 ...

  4. nginx配置浅析

    一.nginx的介绍 nginx是由俄罗斯人开发的一款高性能的http和反向代理服务器,也可以用来作为邮件代理.相比较于其他的服务器,具有占用内存少,稳定性高等优势 二.nginx的配置 nginx的 ...

  5. nginx负载均衡浅析

    熟悉Nginx的小伙伴都知道,Nginx是一个非常好的负载均衡器.除了用的非常普遍的Http负载均衡,Nginx还可以实现Email,FastCGI的负载均衡,甚至可以支持基于Tcp/UDP协议的各种 ...

  6. 浅析 Nginx 网络事件

    Nginx 是一个事件驱动的框架,所谓事件主要指的是网络事件,Nginx 每个网络连接会对应两个网络事件,一个读事件一个写事件.在深入了解 Nginx 各种原理及在极端场景下的一些错误场景处理时,需要 ...

  7. 浅析Nginx与Apache的区别

    Nginx相对于Apache的优势: 1.轻量级,采用C进行编写,同样的web服务,会占用更少的内存及资源 2.抗并发,nginx以epoll and kqueue作为开发模型,处理请求是异步非阻塞的 ...

  8. netty5 HTTP协议栈浅析与实践

      一.说在前面的话 前段时间,工作上需要做一个针对视频质量的统计分析系统,各端(PC端.移动端和 WEB端)将视频质量数据放在一个 HTTP 请求中上报到服务器,服务器对数据进行解析.分拣后从不同的 ...

  9. 浅析 Linux 初始化 init 系统,第 1 部分: sysvinit 第 2 部分: UpStart 第 3 部分: Systemd

    浅析 Linux 初始化 init 系统,第 1 部分: sysvinit  第 2 部分: UpStart 第 3 部分: Systemd http://www.ibm.com/developerw ...

随机推荐

  1. MySQL应用架构优化-实时数据处理

    1.1. 场景 在和开发人员做优化的时候,讨论最多的应该是结合应用场景编写出合适的SQL.并培训开发应该如何编写SQL让MySQL的性能尽量好.但是有一些的场景对于SQL的优化是行不通的. 打个比方, ...

  2. 解决MySQL5.6中的Slave延迟问题的基本教程

    一.原因分析一般而言,slave相对master延迟较大,其根本原因就是slave上的复制线程没办法真正做到并发.简单说,在master上是并发模式(以InnoDB引擎为主)完成事务提交的,而在sla ...

  3. 转:35个让人惊讶的 CSS3 动画效果演示

    本文收集了35个惊人的 CSS3 动画演示,它们将证明 CSS3 Transform 和 Transition 属性的强大能力.CSS 是网页设计非常重要的一部分,随着越来越多的浏览器对 CSS3 支 ...

  4. 怎么查看自己电脑的IP地址

    1/2 使用Windows+R键打开“运行”窗口,然后输入CMD进入命令提示窗口 进入命令窗口之后,输入:ipconfig/all 回车即可看到整个电脑的详细的IP配置信息 1/3 使用网络状态查看I ...

  5. 深入浅出SharePoint——Search疑难排除

    通过Search log http://richardstk.com/2013/12/23/using-the-sharepoint-2013-search-query-tool-with-searc ...

  6. css实现常用的两栏三栏布局

    1.两栏 <div class="wrapper"> <div class="half left">left box <p> ...

  7. Ubuntu集群 配置ntp服务

    1.概述 NTP(Network Time Protocol)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN ...

  8. [JLOI2013]删除物品

    嘟嘟嘟 只要每一次将优先级最高的上面的物品移走,就一定能保证是最优解. 所以我们只要想办法简化这个模拟移物品的过程,看完了题解后,发现可以这么想,我们可以把两个栈头碰头的挨在一起,然后设一个指针代表两 ...

  9. 3.3 线程---Handler消息传递机制浅析

    Handler的执行流程图: 当我们的子线程想修改Activity中的UI组件时,我们可以新建一个Handler对象,通过这个对象向主线程发送信息;而我们发送的信息会先到主线程的MessageQueu ...

  10. 剑指offer.从未到头打印链表

    输入一个链表的头结点,按照 从尾到头 的顺序返回节点的值.返回的结果用数组存储. 样例 输入:[2, 3, 5] 返回:[5, 3, 2] 1.使用栈. class Solution { public ...