一. nginx功能概述

  nginx 提供的基本功能服务归纳为:基本HTTP服务、高级HTTTP服务、邮件代理服务、TCP/UDP 代理服务等四大类。

  (1) Nginx提供基本HTTP服务,可以作为HTTP代理服务器和反向代理服务器,支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持包过滤功能,支持SSL等。

  (2) Nginx提供高级HTTP服务,可以进行自定义配置,支持虚拟主机,支持URL重定向,支持网络监控,支持流媒体传输等。

  (3) Nginx 作为邮件代理服务器是最早开发这个产品的目的之一,它支持IMAP/POP3代理服务功能,支持内容SMTP代理服务功能。

  1.1 基本HTTP服务

    (1) 处理静态文件(如HTML静态网页及请求),处理索引文件以及支持自动索引。

    (2) 打开并自行管理文件描述符缓存。

    (3) 提供反向代理服务,并且可以使用缓存加速反向代理,同时完成简单负载均衡和容错。

    (4) 提供远程FastCGI服务的缓存机制,加速访问,同时完成简单的负载均衡和容错。

    (5) 使用Nginx的模块化特性提供过滤器功能,Nginx基本过滤器包括Gzip压缩、rgnges支持、chunked响应、XSLT、SSL以有图像缩放等。

    (6) 支持HTTP下的安全套接层安全协议SSL。

1.2 高级http服务

    (1) 支持基于名字和IP的虚拟主机设置。

    (2) 支持http的Keep-alive模式和管线Pipelined模型连接。

    (3) 支持重新加载配置以及在线升级时,无须中断中在处理的请求。

    (4) 自定义访问日志格式、带缓存的日志写操作以及快速日志轮转和syslog日志记录。

    (5) 提供http状态3xx~5xx错误代码重定向功能。

    (6) 支持重写(Rewrite)模式扩展,使用正则表达式更改URL。

    (7) 支持HTTP dav模块,为http webdav 提供put、DELETE、MKCOL、COPY、MOVE方法。

    (8) 支持FLV流和MP4流传输。

    (9) 支持网络监控,包括基于客户端IP地址和HTTP基本认证的访问控制、速度限制、来自同一地址的同时连接数或请求数限制等。

    (10) 支持嵌入Perl语言。

    (11) njs脚本语言。

  1.3 邮件代理服务

    (1) 支持使用外部HTTP认证服务器重定向 用户到IAMP/POP3后端,并支持IMAP认证方式和POP3认证方式。

    (2) 支持使用外部HTTP认证服务器认证用户后 重定向连接到内部SMTP后端,并支持SMTP认证方式。

    (3) 支持邮件代理服务下的安全套接层安全协议SSL。

    (4) 支持纯文本通信协议的扩展协议starttls。

  1.4  TCP/UDP代理服务器功能

    (1) TCP/UDP的通用代理。

    (2) SSL和TLS SNI 支持TCP。

    (3) 负载均衡和容错。

    (4) 基于客户端地址的访问控制。

    (5) 根据客户端地址执行不同的功能。

    (6) 限制来自同一个ip地址的同时连接数。

    (7) 自定义访问日志格式、带缓存的日志写操作以及快速日志轮转和syslog日志记录。

    (8) 基于IP的地理定位。

    (9)  njs脚本语言。

二.常用功能介绍

  2.1 HTTP代理和反向代理

    代理服务和反向代理是Nginx服务器作为Web服务器的主要功能之一,尤其是反向代理应用广泛。Nginx服务器转发来自前端的请求,性能稳定而且后端转发与业务配置相互分离,配置灵活。在后端转换请求完全不用关心网络环境如何,可以指定任意的ip和port或其他类型链接请求等。

    通过正则表达式进行相关配置,可以实现根据不同的表达式,采取不同的转发策略,并且对后端异常判断则重新转向另一后端ip。

  2.2 负载均衡

    一般来说负载均衡是将大量前端并发访问或数据流量分担到多个后端网络节点上分别处理,这样可有效减少前端用户等待响应的时间。对于Nginx负载策略可分为两大类:内置策略和扩展策略。(1)内置策略:轮询、加权轮询、ip hash 三种;(2) 扩展策略主要通过第三方模块实现,种类丰富,常见有url hash、fair等。默认内置策略会被编译进Nginx内核,使用时只需要在Nginx服务器配置中设置相关参数即可。而扩展策略需要手动将第三方模块编码到Nginx内核。

  2.3 Web缓存

    Nginx服务器的Web缓存服务主要由proxy_cache和fastcgi_cache的相关指令集构成。其中proxy_cache主要用于在Nginx服务器提供反向代理服务时,对后端源服务器的返回内容进行URL缓存; fastcgi_cache主要用于对fastcgi的动态程序进行缓存。另外还有第三方模块的Web缓存功能。

    Squid也是一款相当流行的开源代理服务器和Web缓存服务器。Ngnix服务器对多核CPU的调度比Squid更好,性能高于Squid。

  参考文献:

    正向代理和反向代理:https://www.cnblogs.com/xdp-gacl/p/3706853.html

    官方介绍:http://nginx.org/en/

    Nginx高性能Web服务器详解

nginx系列 2 概述的更多相关文章

  1. 快速入门系列--MVC--01概述

    虽然使用MVC已经不少年,相关技术的学习进行了多次,但是很多技术思路的理解其实都不够深入.其实就在MVC框架中有很多设计模式和设计思路的体现,例如DependencyResolver类就包含我们常见的 ...

  2. Nginx系列

    包括nginx的入门和进阶学习. 目录 nginx系列1:认识nginx nginx系列2:搭建nginx环境 nginx系列3:搭建一个静态资源web服务器 nginx系列4:日志管理 nginx系 ...

  3. nginx系列 3 nginx.conf介绍(1)

    一. nginx.conf 文件结构概述 在第一篇中讲到nginx的安装,安装完后,默认的nginx服务器配置文件都存在安装目录conf中,主配置文件名为nginx.conf.下面是我linux系统安 ...

  4. 死磕nginx系列--nginx 目录

    死磕nginx系列--nginx入门 死磕nginx系列--nginx配置文件 死磕nginx系统-nginx日志配置 死磕nginx系列--nginx服务器做web服务器 死磕nginx系列--使用 ...

  5. 死磕nginx系列--配置文档解读

    nginx配置文件主要分为四个部分: main(全局设置) http ( ) upstream(负载均衡服务器设置) server(主机设置) location(URL匹配特点位置的设置) serve ...

  6. Nginx系列1.2:nginx-rtmp流媒体服务器添加权限认证(推流权限和播放权限)

    用到的工具:OBS Studio(推流).nginx-rtmp流媒体服务器.VLC(拉取流播放) Nginx系列1:ubuntu16.04编译出适合自己的nginx服务器 Nginx系列1.1:ubu ...

  7. 死磕nginx系列

    死磕nginx系列 死磕nginx系列--nginx入门 死磕nginx系列--nginx配置文件 死磕nginx系统--nginx日志配置 死磕nginx系列--nginx服务器做web服务器 死磕 ...

  8. Nginx系列~概念与windows下环境搭建

    概述 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sys ...

  9. [2017-08-07]ABP系列——QuickStartA:概述、思想、入门和HelloWorld

    唔,说好的文章,欠了好久,先水一篇. 本系列目录:Abp介绍和经验分享-目录 概述 先表个态:对绝大多数人来说,ABP是成熟的,足以用到生产环境的. 最适合的:业务非常复杂且不追求极致性能的(这里并不 ...

随机推荐

  1. vue获取当前对象

    <li v-for="img in willLoadImg" @click="selectImg($event)"> <img class=& ...

  2. 一小时学会ECMAScript6新特性(二)

    1.对象属性名 es5中我们为一个对象添加属性可以用如下代码: let foods = {}; foods.dessert = '蛋糕'; console.log(foods) 但是属性名中间有空格则 ...

  3. BZOJ.2054.疯狂的馒头(并查集)

    BZOJ 倒序处理,就是并查集傻题了.. 并查集就是确定下一个未染色位置的,直接跳到那个位置染.然而我越想越麻烦=-= 以为有线性的做法,发现还是要并查集.. 数据随机线段树也能过去. //18400 ...

  4. 记录一次大量CLOSE_WAIT的情况

    近期的项目中,有一个特殊的需求,对于每个客户端程序有若干个机构,对于每个机构有不同的客户端证书,程序间隔一段时间向服务端进行请求,根据请求的成功与否更新各机构的状态(如正常,证书未配置,证书过期等). ...

  5. [SCOI2015]小凸玩矩阵

    Description: 给你一个n*m的网格,每个格子有一个数字,每行每列只能选一个数字,问所选数字中第k大的数字的最小值是多少 Hint: \(n \le 250\) Solution: 显然是二 ...

  6. C++ 用变量定义数组

    较早的编译器是不同意这样做的,所以一些书籍比方以Tc解说的书本都说数组的下标不能是变量.在vc6.0下亦是如此. 只是在一些较新的编译器如dev c++已经支持了,例如以下代码不会报错 #includ ...

  7. python爬取网页内容demo

    #html文本提取 from bs4 import BeautifulSoup html_sample = '\ <html> \ <body> \ <h1 id = & ...

  8. 开发中少不了的Fun -- 获取地址栏URL参数

    假设这是一个url地址 http://localhost:8080/a/b/c?a=1&b=2#abc,里面包含的部分: protocol: 'http:', // 协议 host: 'loc ...

  9. vue事件修饰符

    阻止单击事件冒泡 <a v-on:click.stop="doThis"></a>提交事件不再重载页面<form v-on:submit.preven ...

  10. (转)protein 数据库

    最早关注蛋白质互作网络,是在来GDMC第一年的时候,中间停了半年看互作-各种算法,网络分析停滞不前,没想到搞到最后,还是和网络碰到了一起,我总是会潜意识走近给自己第一印象不错的object,包括人.用 ...