Nginx服务详解

一、简介

  Nginx (engine x) 是一个高性能的 HTTP 和 反向代理 服务,也是一个IMAP/POP3/SMTP服务。因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
  Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。
  在高连接并发的情况下,Nginx是Apache服务器不错的替代品。

二、特性

Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性:

单机环境下参考服务器配置。并发连接数在7000+ -8000左右, 集群模式20000+。

作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应。

作为负载均衡服务器:Nginx 既可以在内部直接支持 Rails 和 PHP,也可以支持作为 HTTP代理服务器 对外进行服务。Nginx用C 编写, 不论是系统资源开销还是 CPU 使用效率都比 Perlbal 要好的多。

作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm 描述了成功并且美妙的使用经验。

Nginx 安装非常的简单,配置文件非常简洁(还能够支持perl语法),Bugs非常少的服务器。Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下进行软件版本的升级。

三、I/O多路复用

1.I/O多并发

有两种方法:传统的多进程并发模型、I/O多路复用。
传统的:每进来一个新的I/O流会分配一个新的进程管理。
I/O多路复用:单个线程,通过记录跟踪每个I/O流(sock)的状态,来同时管理 多个I/O流 。尽量多的提高服务器的吞吐能力。

2.Epoll

ngnix会有很多连接进来, epoll会把他们都监视起来,然后像拨开关一样, 谁有数据就拨向谁,然后调用相应的代码处理。

epoll 可以说是I/O 多路复用最新的一个实现,epoll 修复了select/poll绝大部 分问题, 比如:
• epoll 线程安全的。
• epoll 告诉你具体哪个sock有数据,你不用自己去找了。

3.异步非堵塞

 I/O模型有五种,nginx使用的是I/O多路复用模型。
  每进来一个request,会有一个worker进程去处理。但不是全程的处理,处理到什么程度呢?处理到可能发生阻塞的地方,比如向后端服务器转发request,并等待请求返回。那么,这个处理的worker不会这么一直等着,他会在发送完请求后,注册一个事件:“如果upstream返回了,告诉我一声,我再接着干”。于是他就休息去了。这就是异步。此时,如果再有request 进来,他就可以很快再按这种方式处理。这就是非阻塞和IO多路复用。而一旦上游服务器返回了,就会触发这个事件,worker才会来接手,这个request才会接着往下走。

四、Yum安装部署

1.阿里云yum仓库安装方式

[root@cheng ~]# yum -y install nginx
[root@meng ~]# nginx -v
nginx version: nginx/1.16.1

2.无阿里云yum仓库方式

[root@cheng ~]# vim /etc/yum.repos.d/nginx.repo	//新建nginx yum文件
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[root@cheng ~]# yum -y install nginx
[root@cheng ~]# nginx -v
nginx version: nginx/1.18.0

五、编译安装

[root@meng ~]# yum -y install gcc gcc-c++					//安装编译环境
[root@meng ~]# yum install -y pcre pcre-devel  				//使nginx支持http rewrite模块
[root@meng ~]# yum install -y openssl openssl-devel			//使nginx支持ssl
[root@meng ~]# yum install -y zlib zlib-devel	//安装zlib
[root@meng ~]# useradd nginx					//创建用户,nginx进程用户为nginx
[root@meng ~]# wget http://nginx.org/download/nginx-1.16.0.tar.gz
[root@meng ~]# tar xzf nginx-1.16.0.tar.gz -C /usr/local/
[root@meng ~]# cd /usr/local/nginx-1.16.0/
[root@meng ~]# ./configure \ 		
--prefix=/usr/local/nginx \				//指向安装目录
--group=nginx  --user=nginx \			//用户
--sbin-path=/usr/local/nginx/sbin/nginx \				//nginx命令存放文件
--conf-path=/etc/nginx/nginx.conf \						//指定配置文件
--error-log-path=/var/log/nginx/error.log \				//错误日志
--http-log-path=/var/log/nginx/access.log \				//日志
--http-client-body-temp-path=/tmp/nginx/client_body \  	//客户端请求临时文件
--http-proxy-temp-path=/tmp/nginx/proxy \				//http代理临时文件路径
--http-fastcgi-temp-path=/tmp/nginx/fastcgi \			//http fastcgi临时文件路径
--pid-path=/var/run/nginx.pid \		//指定pid文件
--lock-path=/var/lock/nginx \		//指定lock文件
--with-http_stub_status_module \	//获取nginx自上次启动以来的状态
--with-http_ssl_module \			//启用ssl支持
--with-http_gzip_static_module \	//在线实时压缩输出数据流
--with-pcre --with-http_realip_module	 //允许从请求标头更改客户端的IP地址值,默认为关
--with-stream			//启用stream
[root@meng ~]# make && make install

六、限制传输速度

[root@cheng ~]#vim /etc/nginx/nginx.conf
location / {
      root   /var/www/nginx/;
      index  index.html index.htm;
      limit_rate  2k; 		//对每个连接的限速为2k/s
}
[root@cheng ~]#systemctl restart nginx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值