共计 1637 个字符,预计需要花费 5 分钟才能阅读完成。
1. 简介
1.1 过程
有一个 master 过程:读取、评估 conf; 保护 worker 过程;
有多个 worker 过程:解决申请;
1.2 nginx 过程模型
nginx 采纳 事件驱动模型
和操作系统机制来实现申请散发 worker 过程;
1.3 工作过程数
worker 工作过程在 conf 中配置、也可由 CPU 外围数主动调整
worker_processor number|auto;
// 默认是 number; 如果是 auto, 则默认 CPU 核数
1.4 配置文件地位
配置文件:nginx.conf 位于:
- /usr/local/nginx/conf
- /usr/local/etc/nginx
- /etc/nginx
1.5 start stop reload
1.5.1 通过 nginx -s (signal) 发信号来操作
signal=>
stop: 疾速终止
quit: 优雅终止
reload: 重加载配置
reopen: 从新关上日志文件
1.5.2 进行 nginx
nginx -s quit
期待 worker 过程解决完以后申请后进行 nginx nginx -s stop
立即进行 nginx 过程
1.5.3 从新加载配置
nginx -s reload
master 过程收到 reload 操作指令后:
- 查看配置语法合法性;
- 利用配置;
- 若利用配置胜利,master 过程开启新的 worker 过程并发信息给旧的 worker 过程申请他们进行;若利用配置失败,主过程回滚,仍应用旧的 worker 过程工作;
- 旧的 worker 过程收到一个 master 的 shutdown 命令,会进行接管新的连贯,但持续退役完手上的以后申请。而后,旧的 worker 过程退出。
1.5.4 列出所有的 nginx 过程
ps -ax|grep nginx
2. 配置文件构造
2.1 模块
nginx 由模块组成,这些模块由配置文件中的指令管制。
指令分为 简略指令
和块指令
。
2.2 简略指令
由名称和参数组成 (两头用空格),并以分号(;) 完结。
2.3 块指令
与简略指令有雷同的构造,但它用一对大括号 {} 来突围而不是分号 (;) 完结。
2.4 上下文
如果块指令能够在大括号内蕴含其余指令,它 (块) 就被称作上下文。例如
events, http, server, location
2.5 main 上下文
在其余上下文之外的指令,被认为是main 上下文
(主上下文)
- events 和 http 指令,属于 main 上下文;
- server 属于 http 上下文;
- location 属于 server 上下文;
2.6 “#” 井号之后的行内内容为正文
3. 服务动态内容
3.1 文件
一个动态 html /data/www ->index.html
一个图片 /data/images *.jpg
3.2 构造
http {
server {
location / {root /data/www;}
}
}
location 的 ”/” 将会与 URI 中的申请地址相比拟,匹配到,就会从 root 指定的门路中来定位申请信息:
如果有多个 location:抉择最长前缀匹配;这里 ”/” 是最短匹配,只有当所有匹配都匹配不到,才会在它的 root 中去定位。
3.3 接着减少第二个 location
location /images/ {
root /data;
}
它将会匹配由 /images/ 结尾的申请。(/ 也匹配,然而它是最短匹配)
3.4 最终配置
server {
location / {root /data/www;}
location /images/ {root /data;}
}
以 /images/ 结尾的申请将会以 /data/images 目录下查找去响应;例如:http://localhost/images/a.jpg
, nginx 会发送 /data/images/a.jpg
文件给你,如果找不到会 404;若不是 “/images/” 结尾,将会到 /data/www
去匹配。
3.4 日志
要使 nginx 失效:nginx -s reload
若有问题,可查日志:access.log
/ error.log
/usr/local/nginx/logs
或者 /usr/log/nginx
… 未完待续(旧笔记已誊抄完,未学完而已)