Nginx介绍
Nginx介绍
Nginx开源版 http://nginx.org/en/
官方原始的Nginx版本
Nginx plus商业版
开箱即用,集成了大量功能
Open Resty https://openresty.org/cn/
OpenResty是一个基于Nginx与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。更适用于需要大量二次开发的场景,有极强的扩展性
Tengine https://tengine.taobao.org/
由淘宝网发起的Web服务器项目。它在Nginx (opens new window) (opens new window)的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网 (opens new window) (opens new window),天猫商城 (opens new window) (opens new window)等得到了很好的检验。相比于Open Resty,扩展性不够强,但是能够满足绝多数使用场景
Nginx安装
下载Nginx包
官网下载地址(opens new window) (opens new window)
使用FTP工具将文件上传到虚拟机中
Termius也提供了FTP的功能,直接将下载的Nginx包拖拽到主机目录中,我这里是放到了root目录下
解压Nginx包,并安装
tar -zxvf nginx-1.21.6.tar.gz #解压到当前目录 cd nginx-1.21.6 #进入解压后的文件夹 ls #文件夹中的文件:auto CHANGES.ru configure html man src CHANGES conf contrib LICENSE README
1
2
3
4安装依赖库
#安装C编译器 yum install -y gcc #安装pcre库 yum install -y pcre pcre-devel #安装zlib yum install -y zlib zlib-devel
1
2
3
4
5
6
7
8安装
./configure --prefix=/usr/local/nginx #使用prefix选项指定安装的目录 make make install
1
2
3启动
cd /usr/local/nginx/sbin ls # 里面是一个nginx的可执行文件 ./nginx # 启动这个可执行
1
2
3关闭防火墙
systemctl stop firewalld
1补充Nginx命令
./nginx -s stop #快速停止 ./nginx -s quit #完成已接受的请求后,停止 ./nginx -s reload #重新加载配置 ./nginx -t #检查nginx配置是否正确
1
2
3
4查看nginx状态
ps -ef|grep nginx
1启动时:
停止时:
注册系统服务
通过系统服务的方式启动nginx
vim usr/lib/systemd/system/nginx.service
1[Unit] Description=nginx After=network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s stop ExecQuit=/usr/local/nginx/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target # 多用户
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16重新加载系统服务
systemctl daemon-reload
1启动服务
systemctl start nginx.service
1开机启动
systemctl enable nginx.service
1
Nginx 目录
Nginx一般安装在/usr/local/nginx
目录下(安装时--prefix可指定安装目录)
[root@localhost ~]# tree /usr/local/nginx
/usr/local/nginx
├── client_body_temp # POST 大文件暂存目录 *_temp #运行时,生成临时文件
├── conf # Nginx所有配置文件的目录 其他配置文件可通过那个include关键字,引入到了nginx.conf生效
│ ├── fastcgi.conf # fastcgi相关参数的配置文件
│ ├── fastcgi.conf.default # fastcgi.conf的原始备份文件
│ ├── fastcgi_params # fastcgi的参数文件
│ ├── fastcgi_params.default
│ ├── koi-utf
│ ├── koi-win
│ ├── mime.types # 媒体类型
│ ├── mime.types.default
│ ├── nginx.conf #这是Nginx默认的主配置文件,日常使用和修改的文件
│ ├── nginx.conf.default
│ ├── scgi_params # scgi相关参数文件
│ ├── scgi_params.default
│ ├── uwsgi_params # uwsgi相关参数文件
│ ├── uwsgi_params.default
│ └── win-utf
├── fastcgi_temp # fastcgi临时数据目录
├── html # Nginx默认站点目录[静态页面]
│ ├── 50x.html # 错误页面优雅替代显示文件,例如出现502错误时会调用此页面
│ └── index.html # 默认的首页文件
├── logs # Nginx日志目录
│ ├── access.log # 访问日志文件
│ ├── error.log # 错误日志文件
│ └── nginx.pid # pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
├── proxy_temp # 临时目录
├── sbin # Nginx 可执行文件目录
│ └── nginx # Nginx 二进制可执行程序
├── scgi_temp # 临时目录
└── uwsgi_temp # 临时目录
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Nginx运行原理

Nginx的进程是使用经典的「Master-Worker」模型,Nginx在启动后,会有一个master进程和多个worker进程。
- master进程主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。
- worker进程主要处理基本的网络事件,多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。worker进程的个数是可以设置的,一般会设置与机器cpu核数一致,这里面的原因与nginx的进程模型以及事件处理模型是分不开的。