1.Nginx目录结构
[root@zjh nginx]# tree
.
├── client_body_temp
├── conf //主要放置Nginx的主配置文件
│ ├── fastcgi.conf
│ ├── fastcgi.conf.default
│ ├── fastcgi_params
│ ├── fastcgi_params.default
│ ├── koi-utf
│ ├── koi-win
│ ├── mime.types //媒体类型,返回什么格式的文件.html .jpg等是让浏览器进行解析的
│ ├── mime.types.default
│ ├── nginx.conf //主要是这个,他会引用其他的配置文件,一般对他进行修改
│ ├── nginx.conf.default
│ ├── scgi_params
│ ├── scgi_params.default
│ ├── uwsgi_params
│ ├── uwsgi_params.default
│ └── win-utf
├── fastcgi_temp //后缀是temp的是启动后才有的,安装完Nginx是没有的
├── html //默认情况下的网页和静态资源
│ ├── 50x.html
│ └── index.html
├── logs //记录日志
│ ├── access.log //用户访问日志(时间、地点、任务、请求参数等)
│ ├── error.log //系统错误日志(404等)
│ └── nginx.pid //记录Nginx的主进程号
├── proxy_temp
├── sbin //只有一个Nginx的主程序
│ └── nginx
├── scgi_temp
└── uwsgi_temp
2.Nginx 运行原理
用户访问Nginx的步骤:
- 用户发起请求,Nginx主目录下有/sbin/nginx,运行可执行文件
- 此时会开启Master主进程,他会把配置文件读取进来,对配置文件进行校验,如果没有错误就开启子进程(worker)
- 子进程启动,直接处理用户请求,解析用户请求,看是否能找到用户请求
- 解析后就会读取/conf/nginx.conf目录,然后请求html,加载html页面
注意
: Nginx在运行的过程中会开启俩个进程,一个是Master主进程,一个是子进程主进程:协调各个子进程之间的关系
子进程:主要处理用户的请求
==总结==:Nginx是多进程同时运行的模式,是由主进程fork出来的子进程,多个进程同时完成用户的请求,主进程用于协调子进程(例如配置文件改了,他会重新加载,会把当前的子进程杀掉,此时新的进程读取新的配置文件)
3.Nginx 基本配置
#user nobody;
worker_processes 1; //进程个数,默认开启的时候启动一个子进程
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024; //每个进程可以创建1024个连接
}
http {
include mime.types; //将另一个文件,引入到主配置文件
default_type application/octet-stream; //默认类型(在mime.types没有的类型)
//#默认文件类型,如果mime.types预先定义的类型没匹配上,默认使用二进制流的方式传输
sendfile on; //数据0拷贝,直接从你的电脑通过无线拷贝到我的电脑,不需要借助u盘
keepalive_timeout 65; //保持连接,时间超时
server { //一个server代表一个主机,nginx可以配置多个主机
listen 80; //默认服务器端口是80,通过端口后来区分不同的主机
server_name localhost; //配置域名或主机名
#http://baidu.com/xxo/index.html 为URL
#/xxo/index.html 为URI(资源)
location / { //重点内容(域名后面的子目录,类似于URI)
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html; //发生服务器内部错误
location = /50x.html { //不同的错误码会转向不同的html下
root html;
}
}