一. 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. Py之Crawler:利用python的爬虫功能实现从各种网站上(以百度贴吧为例)获得你喜欢的照片下载到本地电脑上——Jason niu

    import urllib.requestimport re import os def open_url(url): req=urllib.request.Request(url) req.add_ ...

  2. 浅谈C#常用集合类的实现以及基本操作复杂度

    List 集合类是顺序线性表,Add操作是O(1)或是O(n)的,由于List的容量是动态扩容的,在未扩容之前,其Add操作是O(1),而在需要扩容的时候,会拷贝已存在的那些元素同时添加新的元素,此时 ...

  3. itunes 备份导致C盘空间不足问题解决办法

    首先,itunes备份的默认路径是 C:\users\你的用户名\Appdata\Roaming\Apple computer 备份的主要存放文件在C:\Users\David_lu\AppData\ ...

  4. Android Studio 中 Live Templates 的使用

    Android Studio 中的 Live Templates 是什么? Live Templates 有什么用处? Live Templates 可以理解为:在你编码过程中,IDE自动生成的代码内 ...

  5. Linux下安装、编译SDL

    要搞图形界面,SDL是比较好上手的一个库.今天试着在centos下搞了一个SDL的程序.下面是配置的步骤: 首先yum search SDL,会出现SDL相关的软件包.不过我这里只有SDL1的,没有2 ...

  6. 关于各种工具输入参数中"-"和"--"

    关于各种工具输入参数中"-"和"--" 写个随笔记录下来 一直搞不懂,为啥在使用很多工具的时候,他的参数要加的"-"数量不一样呢? 如果输入 ...

  7. mysql学习2

    1.视图 视图是一个虚拟表(非真实存在),其本质是[根据sql语句获取动态的数据集,并为其命名],用户使用时只需要使用[名称]即可获取结果集,并可以将其当作表来使用. 搜索临时表 SELECT * F ...

  8. mysql node

    mysql8.0版本 报错:Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol req ...

  9. Mac软件安装提示程序已损坏解决方案

    ---恢复内容开始--- 最近下载好的Mac软件安装时,系统跳出该程序已损坏: 嗯……估计是因为下载了破解版,被系统屏蔽,重设一下安全设置就好: 很兴奋的打开系统偏好设置->安全性与隐私: 然而 ...

  10. macOS实现视频转音频以及音频拼接

    macOS实现视频转音频以及音频拼接 ffmpeg 的安装 终端输入以下指令: brew install ffmpeg 视频转音频 终端输入以下指令: ffmpeg -i 视频名称.flv -vn - ...