user nobody; #规定启动nginx时的用户
worker_processes 1; #工作进程个数,1表示开启1个进程,10表示开启10个进程,建议所填进程数,对应当前这台服务器的物理CPU的内核数
#如果只有一个内核,进程数却填了10,等于让一个内核同时去执行不同的任务,好比一个服务员同时给10个桌子上菜,这就需要任务的调度,这种同时的工作反而会降低效率
#Nginx运行模型:一个主进程,一个或多个子进行
#主进程叫master
#子进程叫worker,也叫worker进程
events{
worker_connections 1024; #表示每个worker进程可以创建多少个连接
}
#进入http模块
http{
include mime.type; #引入mime.types配置文件,mine.types请求头,标明返回的文件是什么类型的
#浏览器访问一个文件,执行打开或是下载,由mime.types决定,mime.types可以对应到具体的文件名
#单独引入配置的好处:可以让配置看起来整洁好维护,多人合作时,也可避免同时打开同一个文件,形成竞争锁
default_type application/octet-stream; #如果不包含在mime.types中,默认以“application/octet”数据流的方式传输给客户端(浏览器)
sendfile on; #指“数据零拷贝”,作用是减少数据复制、中间调度的过程
#常规过程:网络请求 -> Linux -> 通过端口转给Nginx -> 通过配置文件,找到所访问的本地文件 -> Nginx读文件,完整加载到应用程序内存中 -> 把内存中的数据发送到网络接口(网卡驱动) -> 推送给用户 (此过程每次读取都需要缓存,层层缓存)
#开启sendfile:网络请求 -> Linux -> 通过端口转给Nginx -> 发送信号给网络接口sendfile() -> 网络接口读取文件后缓存 -> 发送给用户
keepalive_timeout 65; #保持连接超时的时间
}
#表示一个主机
server{
listen 80; #监听端口号
server_name localhost; #域名、主机名
#location匹配域名后面跟的子目录或路径,专业说法:uri
#可以对某一段uri完整匹配,或按某一段照规则模糊匹配
#如:https://www.daxiao.show/index.php?m=search&q=Mysql 全称url,uri指域名后面的部分 /index.php?m=search&q=Mysql,又称为资源
location / {
root html; #用户匹配到这个localtion后去哪个目录找网页
#直接加html,表示相对目录:/usr/local/nginx
index index.html index.htm; #当前localtion下的默认页
}
#出现某个错误码后,转向到内部的某个地址上
#比如 “https://www.daxiao.show/index.php?m=search&q=Mysql” 出现502错误,转到 https://www.daxiao.show/50x.html 这个地址
error_page 500 502 503 504 /50x.html
location = /50x.html {
root html; #表示一旦访问50x.html的时候,要到指定的目录
}
}