一:Nginx简介
- Nginx的产生
Nginx是一款高性能的 HTTP 和反向代理服务器,由俄罗斯人Igor Sysoev(伊戈尔·赛索耶夫)为俄罗斯网
站Rambler.ru开发的,在Rambler.ru网站平稳的运行了四年,而且俄俄罗斯超过20%的虚拟主机平台采用
Nginx作为反向代理服务器。
在国内,使用nginx网站用户有:百度、京东、金山爱词霸、新浪、校内网、、淘宝、YUPOO相册、
豆瓣、迅雷看看、网易、腾讯等。 - Nginx的优点
⑴高并发量:根据官方给出的数据,能够支持高达 50,000 个并发连接数的响应
⑵内存消耗少:处理静态文件,同样起web 服务,比apache 占用更少的内存及资源,所以它是轻量级的
⑶简单稳定:配置简单,基本在一个conf文件中配置,性能比较稳定,可以7*24小时长时间不间断运行
⑷模块化程度高:Nginx是高度模块化的设计,编写模块相对简单,包括 gzipping, byte ranges, chunked
responses,以及 SSI-filter 等 filter,支持 SSL 和 TLSSNI。
⑸支持Rwrite重写规则:能够根据域名、URL的不同, 将HTTP请求分发到不同的后端服务器群组。
⑹低成本:Nginx可以做高并发的负载均衡,且Nginx是开源免费的,如果使用F5等硬件来做负载均衡,
硬件成本比较高
⑺支持多系统:Nginx代码完全用C语言从头写成,已经移植到许多体系结构和操作系统,包括:Linux、
FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows,由于Nginx是免费开源的,
可以在各系统上编译并使用。
- Nginx的缺点
⑴动态处理差:nginx处理静态文件好,耗费内存少,但是处理动态页面则很鸡肋,
现在一般前端用nginx作为反向代理抗住压力,apache作为后端
处理动态请求。
⑵rewrite弱:虽然nginx支持rewrite功能,但是相比于Apache来说,Apache比nginx 的rewrite 强大。
二:Nginx的编译与安全
- 下载稳定版本的Nginx(Linux环境CentOS7)
- 使用命令:wget+下载地址
- 解压Nginx的安装包
命令:tar zxvf +压缩包名称
- 安装并且指定Nginx安装路径的命令
⑴首先我们需要进入Nginx的安装包目录下
⑵基于上面路径的安装命令
./configure --prefix=要安装到的路径
通过上面命令的安装发现检查没有通过,缺少了PCRE library(这个就是正则表达式的库)。
那么我们就先把这个PCRE安装上就可以了。
安装命令:yum install pcre
那么应该就是缺少pcre-devel,需要我们下载这个
安装命令:yum install pcre-devel
注意:可能还会出现zlib library没有那么就需要安装 yum install zlib-devel安装包
安装好之后我们再一次运行上面安装Nginx的命令:
安装OK如下:
- 下面还需要编译Nginx
命令:make && make install
- 下面我们需要启动nginx
⑴首先我们需要进入到安装的目录下
conf:配置文件
html:网页文件
logs:日志文件
sbin:主要的二进制程序
⑵启动如下
命令:./sbin/nginx
- 检查Nginx是否启动OK
命令:./sbin/nginx -t
效果:
三:Nginx的信号量
- Nginx的信号控制
QUIT:优雅的关闭进程,即等请求结束后再关闭
⑴ 使用INT控制实例
a:查看当前nginx进程
b:现在我们强制的关掉nginx线程(关掉主线程的话,子线程也会自动关闭)
⑵使用HUP 实例(修改配置文件后,不需要重新启动nginx,只需要使用HUP命令,就可以重新使配置文件生效)
a:首先我们在nginx的html目录下创建一个test.html和nginx本身的index.html文件同目录
b:修改目录/opt/nginx/conf下的nginx.conf文件,让nginx默认读test.html
c:我们现在没有重启nginx,查看网页效果
使用命令:kill -HUP +主进程PID
效果:
⑶使用USR1实例
Linux文件系统在向文件写数据的时候,不是根据文件名来做标识的,而是根据inode,
就是如果将nginx的日志文件access.log改了别的名字(access.log.bak),nginx日志
还是会写到access.log.bak文件中,如果使用kill USR1 xx(nginx master pid),nginx会
重新的生成新的日志文件,而不再将日志数据写入到access.log.bak文件中。
a:首先我们查看access.log文件
b:我们将文件名修改为access.log.bak,并且为它重新建立一个access.log文件
c:再次刷新页面看看效果
d:下面我们使用命令解决这个问题
命令:kill -USR1 +主进程PID
- 小技巧
在使用kill命令时,如果想将pid用别的方式代替,其实在logs目录下,nginx.pid就是
存放nginx master pid,所以kill -HUP nginx master pid == kill -HUP `cat nginx.pid`
(注意:这里的引号是单反引号)
文章目录