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
...未完待续(旧笔记已誊抄完,未学完而已)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。