一. 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. CF1013B And

    There is an array with n elements a1, a2, ..., an and the number x. In one operation you can select ...

  2. (转载)Linux终端复用神器-Tmux使用

    Linux终端复用神器-Tmux使用 转载地址:https://blog.51cto.com/652465/2094738 Tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于Open ...

  3. 代码调用t.cn接口生成短址

    新浪短网址接口的稳定性和跳转速度还是很给力的,现给出其API说明. 该接口支持两种返回格式:xml和json 对应的URL请求地址为: xml:http://api.t.sina.com.cn/sho ...

  4. LocalDate、LocalDateTime、LocalTime开发小结

    在我之前的文章<[整理]Java 8新特性总结 >中有提到Date/Time API (JSR 310)对日期与时间的处理.它将服务端对时间的处理进行了统一,使得对时间的处理更加规范和统一 ...

  5. Python科学计算库

    Python科学计算库 一.numpy库和matplotlib库的学习 (1)numpy库介绍:科学计算包,支持N维数组运算.处理大型矩阵.成熟的广播函数库.矢量运算.线性代数.傅里叶变换.随机数生成 ...

  6. 马昕璐 201771010118《面向对象程序设计(java)》第十五周学习总结

    第一部分:理论知识学习部分 JAR文件:将.class文件压缩打包为.jar文件后,使用ZIP压缩格式,GUI界面程序就可以直接双击图标运行. 既可以包含类文件,也可以包含诸如图像和声音这些其它类型的 ...

  7. php代码进行跨域请求处理

    以下的函数作为每个请求的前置操作 (thinkphp框架) public function appInit(&$params) { header('Access-Control-Allow-O ...

  8. 怎么过滤 &nbsp;

    replace(str, " ", ""); 就是这么简单

  9. 2sat

    之前做的两发 https://vjudge.net/problem/UVALive-3211 #include<cstdio> #include<cstring> #inclu ...

  10. vue中实现动态切换不同的值

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...