一、nginx基本命令
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
命令 | 含义 |
---|---|
nginx | 直接启动 |
nginx -v | 查看版本信息 |
nginx -V | 查看编译信息 |
nginx -t/T | 测试配置文件是否存在语法错误 |
nginx -s | 向正在运行的服务发送信号 |
nginx -s stop | 向正在运行的服务发送停止信号,立即停止 |
nginx -s quit | 发送停止信号,不会新接受但会处理完已经接受的服务 |
nginx -s reload | 在不停止Nginx的情况下重载服务,避免因重启造成的服务中断 |
二、nginx模块。配置指令,块之间的关系
1、自定义location
location /demo{
root /opt; #文档根目录为/opt
index index.html index.htm;
}
/demo/a.jpg====/opt/demo/a.jpg #可以省略根目录
http://172.25.1.1//demo/a.jpg====http://172.25.1.1/opt/demo/a.jpg
可以将location中公共部分写在前面的公共部分,如果有冲突自己的优先级高于公共部分
三、nginx进程概述
[root@server1 conf]# ps -ef | grep nginx | grep -v grep
root 17079 1 0 04:06 ? 00:00:00 nginx: master process nginx
nobody 17089 17079 0 04:29 ? 00:00:00 nginx: worker process
1、nobody源码编译当前系统没有Nginx用户,只能另一个进程用nobody,但是安全性不好。
user nginx;
新建用户在配置文件重更改
2、默认情况下worker进程以nobody身份运行,可以使用“user”指令指定nginx用户身份运行
3、nginx启动时,有两个进程,一个masker进程(读取配置文件,管理worker进程)(只能有一个),一个worker进程(负责处理请求的进程)(可以有多个)。
worker_processes指令更改worker数量。通常不会大与cpu核心数。设为auto时会自动设置为cpu核心数
worker_cpu_affinity指令;让worker进程与某个cpu绑定。cpu掩码:0000
0001 0010 0100 1000
四、nginx:root指令和alias指令区别
root和alias指令都能将url和服务器中某个具体的目录对应起来。但是之间存在一些区别。
1、
location /demo {
root /opt/test
}
实际上访问的时/opt/test/demo/a.jpg,输入的是/demo/a.jpg
location /demo {
alias /opt/test
}
实际上访问的时/opt/test/a.jpg,输入的是/demo/a.jpg,完全对等的。
2、能够处于的上下文的位置和不同。
alias只能在location中使用,root不然。
五、nginx:漫谈5种io模型
用户进程中的完整的IO分为两个阶段:
用户进程空间-内核空间,内核空间-设备空间。无法直接操作IO进程。
5种IO模型分为阻塞IO模型、非阻塞IO模型、IO复用模型、信号驱动的IO模型、异步IO模型。
(1)、阻塞IO模型
进程发起IO系统调用后,进程被阻塞,转到内核空间,处理完毕后返回进程,操作成功后进程取到数据。
在数据来临之前一直在等待。
(2)、非阻塞IO模型
进程发起IO系统调用后,内核数据没有准备好返回一个错误,不影响干其他,但是需要不断询问。加重cpu压力。
(3)、IO复用模型
多个进程注册到一个复用器中,select会帮监听所有注册的IO。解放等待数据的过程。
select:最多监听不能多于FD_SIZE=1024
poll:原理和select相似,没有数量限制。但是数量大,线性扫描性能下降,不知道数据主人,需要轮循找。
epoll:事件驱动不阻塞,mmap实现内核与用户空间的消息传递。数据量大,不需要轮循找人。
(4)、信号驱动的IO模型
当进程发起一个IO操作,会向内核注册一个信号处理函数,然后进程返回不阻塞,当内核数据就绪会发送信息给进程,在读取。不需要中间商。
(5)、异步IO模型
当进程发起一个IO操作,进程返回(非阻塞),但没有结果,内核处理完io后,会通知进程结果,如果操作成功直接去的数据。(直接送货上门)