1.Nginx概述
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。
其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
2.Nginx安装
2.1下载Nginx
Nginx的官网下载地址是:http://nginx.org/en/download.html。可以点击进入,看到如图所示页面:
![](https://img.haomeiwen.com/i17014808/9574f42ae17b240a.png)
其中红圈圈住的代表当前最新的稳定正式版本,我们也下载此版本。因为是在centos上面安装,我们下载Linux版本:
![](https://img.haomeiwen.com/i17014808/e803ddaca020b389.png)
下载完后,上传到服务器上面,比如我们上传的路径为 /packages。
2.2 环境准备
安装前先要确定Linux的内核版本要在2.6以上,只有2.6之后才支持epool ,在此之前使用select或pool多路复用的IO模型,无法解决高并发压力的问题。通过命令uname -a 即可查看:
![](https://img.haomeiwen.com/i3673891/c088ac558b3cc70d.png)
另外Nginx需要GCC编译器,用来编译C语言环境,Nginx不会提供二进制可执行程序,只能下载源码进行编译;
另外还需要PCRE库,是专门用来做正则表达式的,Nginx里面很多地方都用到了正则表达式,因此需要进行安装;
另外还需要zlib库,zlib库用于对HTTP包的内容做gzip格式的压缩,如果我们在nginx.conf里配置了gzip on,并指定对于某些类型(content-type)的HTTP响应使用gzip来进行压缩以减少网络传输量;
另外还需要OpenSSL开发库,如果我们的服务器不只是要支持HTTP,还需要在更安全的SSL协议上传输HTTP,那么就需要拥有OpenSSL了。另外,如果我们想使用MD5、SHA1等散列函数,那么也需要安装它;
上面几个库都是Nginx 基础功能所必需的,为简单起见我们可以通过yum 命令统一安装:
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre pcre-devel
2.3解压安装
安装完毕后,解压nginx,在对应的目录/packages中,有我们下载的包:
![](https://img.haomeiwen.com/i17014808/0ab04ef41484ae1c.png)
执行解压命令:
tar -zxvf nginx-1.16.0.tar.gz
可以看到解压到了目录下面:
![](https://img.haomeiwen.com/i17014808/6bd5f08650818c6c.png)
进入nginx文件夹,执行命令:
./configure
然后执行命令:
make
然后执行命令:
make install
执行完成之后nginx 运行文件 就会被安装在/usr/local/nginx
下。
![](https://img.haomeiwen.com/i17014808/dbbf8067a3145707.png)
进入安装目录:
cd /usr/local/nginx
![](https://img.haomeiwen.com/i17014808/5f783eea25b8b3dc.png)
可以看到目录下有四个文件夹:
- conf是配置目录
- html是静态资源目录
- logs是日志
- sbin是一些执行命令
3.常用命令
3.1启动Nginx
下面介绍几种启动方式:
-
./sbin/nginx
默认方式启动 -
./sbing/nginx -c /tmp/nginx.conf
指定配置文件启动 -
./sbin/nginx -p /usr/local/nginx/
指定nginx程序目录启动
我们启动nginx,访问页面,查看是否启动成功:
![](https://img.haomeiwen.com/i3673891/9b9c3f74a9b1af13.png)
可以看到启动成功!
注意,nginx默认使用的端口是80,如果端口已经被占据,那么需要修改默认端口!默认的配置在安装文件夹下的conf文件夹下的ngixn.conf文件中,目录为 /usr/local/nginx/conf ,修改端口:
![](https://img.haomeiwen.com/i3673891/e0cca8dc43c16d5b.png)
启动可以看到端口改为8080:
![](https://img.haomeiwen.com/i3673891/36f8e12d6ffe864c.png)
3.2停止Nginx
介绍几种停止方式:
-
./sbin/nginx -s stop
快速停止(直接暴力停止) -
./sbin/nginx -s quit
优雅停止(不接收新请求,处理完现有请求后停止)
3.3.其他命令
-
./sbin/nginx -s reload
热装载配置文件 ,不用停止可以刷新配置(一定要熟练,这是用的最多的命令) -
./sbin/nginx -s reopen
重新打开日志文件(下面单说) -
./sbin/nginx -t
检测当前使用的是哪个配置文件,配置是否正确(可以在配置文件加点乱码测试一下)(这个命令也经常使用)
4.日志重写
启动完后,我们可以看到nginx有两个进程:一个master,一个worker
![](https://img.haomeiwen.com/i3673891/d424a99a647b8c7c.png)
master进程主要用来做热装载更新或者日志之类的。
worker进程才是真正执行客户端连接的进程,为了提高性能,worker进程是可以设置成多个的,后面文章再说。
上面有个命令 ./sbin/nginx -s reopen
是重新打开日志文件,什么意思呢?
下面做个演示,首先查看我们日志目录下面的日志文件大小:
![](https://img.haomeiwen.com/i3673891/47a4f11f3bde9ee7.png)
然后打开页面,连续刷新几次,再查看大小:
![](https://img.haomeiwen.com/i3673891/5592d1c967353e85.png)
可以看到access.log文件变大了,那么我们把现在的日志文件备份一下,然后新建一个access.log文件:
cd /usr/local/nginx/logs/
mv access.log access.log.bak
然后新建一个文件命名为access.log:
![](https://img.haomeiwen.com/i3673891/5ef8cae399ae9379.png)
现在再次刷新页面,然后查看哪个日志文件变大了:
![](https://img.haomeiwen.com/i3673891/4b38c7ecd64af404.png)
发现不是新的日志文件变大了,而是老的备份文件,说明日志还是写到老文件里面去了,这是什么原因呢?
nginx把日志写入日志文件的时候,并不是根据文件路径去找文件,而是根据日志文件的句柄,而句柄中记录了使用哪个日志文件,不会因为文件的名字改变而改变。
这个时候要写使用新建的日志文件,必须使用 reopen 命令从新打开文件,相当于从新切换句柄中的日志文件引用,现在执行命令:
./sbin/nginx -s reopen
然后再刷新页面,可以看到日志写入到新文件中:
![](https://img.haomeiwen.com/i3673891/33c9438dedf40732.png)
用上面这种方式可以进行日志切割备份。
网友评论