Nginx之基础概念及特性介绍

Nginx之基础概念及特性介绍

1. Nginx的基础概念及特性

1.1 什么是Nginx?

Nginx是一款轻量级的HTTP服务器,发音为“engine X”,是一款高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器,一个通用的TCP / UDP代理服务器。其特点是占用内存资源少,并发能力强,根据官方提供的资料,单台服务器并发能力最高能达到5万个。Nginx最初是由俄罗斯人Igor Sysoev 为俄罗斯的访问量第二的站点Ramber.ru开发的,使用了基于BSD的许可。Nginx的官方站点:http://nginx.org/

Nginx是以事件驱动的方式编写,所以具备非常好的性能,同时也是一个非常高效的反向代理、负载均衡。其拥有匹配lighttpd的性能,同时还没有lighttpd的内存泄漏问题。根据官方资料,Nginx维持10000个非活动连接,只需要2.5M内存。

目前很多国内的网站采用Nginx作为Web Server,如国内知名的新浪、163、腾讯、Discuz、豆瓣等。还有诸如淘宝对Nginx作了二次开发的tengine等等。根据netcraft统计,截止目前2018年,Nginx已超越了Apache在全球web server中排名第2,占有21.71%的份额。

Nginx 因为它的稳定性、丰富的模块库、灵活的配置和低系统资源的消耗而闻名.业界一致认为它是 Apache2.2+mod_proxy_balancer 的轻量级代替者,不仅是因为响应静态页面的速度非常快,而且它的模块数量达到 Apache 的近 2/3。对 proxy 和 rewrite 模块的支持很彻底,还支持 mod_fcgi、ssl、vhosts ,适合用来做 mongrel clusters 的前端 HTTP 响应。

1.2 Nginx的特点

1.3 Nginx的基本功能

  • 处理静态文件,索引文件及自动索引;打开文件描述符缓存;
  • 通过加速缓存的反向代理;负载均衡和容错;
  • 通过缓存FastCGI,uwsgi,SCGI和memcached服务器加速支持;负载均衡和容错;
  • 模块化的结构;包括 gzipping,byte ranges,chunked responses,以及SSI-filter。如果由FastCGI或其他代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,则不需要相互等待;
  • 支持SSL和TLS SNI;
  • 支持HTTP / 2;具有加权和基于依赖性的优先级;

1.4 Nginx的扩展功能

  • 基于名称和基于IP的虚拟服务器;
  • 支持活动连接keep-alive;
  • 支持定制访问日志格式,缓冲日志写入,快速日志轮换和syslog日志记录;
  • 3xx-5xx错误代码的重定向;
  • 支持使用正则表达式的URL重写;
  • 根据客户端地址执行不同的功能;
  • 支持基于客户端IP地址,密码(http基本身份验证)和子请求结果的访问控制;
  • 验证http_referer;
  • 响应速度限制;
  • 支持限制来自一个IP地址的并发连接数和请求数;
  • 支持FLV和MP4的流媒体;

1.5 Nginx的基本架构

Nginx是一个支持非阻塞、事件驱动型及异步I/O模型的web server;它是以多进程的方式工作的。

Nginx在启动后,会有一个master进程和多个worker进程。master进程主要用来管理worker进程;包括接收来自客户端http/https请求,向各worker进程发送信号,由worker进程处理,监控worker进程的运行状态;当worker进程异常终止,会自动重新启动新的worker进程。而基本的http连接请求都是由worker进程处理并响应;master只负责分配接入的请求给worker。每个worker进程不会干扰其他worker进程的请求处理。worker的数量是一个设置的,一般会设置与服务器的物理核心数量一致。

在这里插入图片描述

1.6 Nginx的模块类型

Nginx的模块主要由以下几部分组成:

  • Nginx core:核心模块;
  • Standard HTTP modules:标准的HTTP模块;
  • Optional HTTP modules:可选的HTTP模块;
  • Mail modules:邮件模块;
  • Third party module:第三方模块;

Nginx提供了Web服务器的基础功能,同时提供了Web服务反向代理、邮件服务反向代理功能。Nginx core实现了底层的通讯协议,为其他模块和Nginx进程构建了基本的运行时环境,为其他模块构建了协调运行的基础。

2. Nginx的安装部署

2.1 RPM方式安装

rpm方式安装,只需要添加epel源便可即可:

# 配置epel源
[root@localhost ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

# 安装
[root@localhost ~]# yum install -y nginx

# 启动
[root@localhost ~]# systemctl enable nginx.service
[root@localhost ~]# systemctl start nginx.service

2.2 源码编译安装

# 创建nginx用户及组
[root@localhost ~]# groupadd nginx
[root@localhost ~]# useradd -g nginx -s /sbin/nologin nginx

# 下载源码包
[root@localhost ~]# wget http://nginx.org/download/nginx-1.14.2.tar.gz
[root@localhost ~]# ./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --user=nginx --group=nginx --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi

# 安装
[root@localhost ~]# make && make install

# 启动
[root@localhost ~]# /usr/local/nginx/sbin/nginx

使用configure命令配置编译安装,可参考官方文档的,查看该命令支持的参数及含义:http://nginx.org/en/docs/configure.html

2.3 二进制程序nginx常用命令

nginx -t 			# 测试nginx配置文件的语法是否有误
nginx -s stop 		# 处理完最后一个请求后停止nginx进程,包括master和worker进程;
nginx -s reload 	# 重载配置文件;配置文件修改后可以使用该命令不重启nginx平滑加载nginx配置;

nginx的基础概念及特性介绍完毕。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值