目录结构
主要几个:
- conf(放置Nginx的核心配置文件,主配置文件nginx.conf)
- html(默认情况下的网页和静态资源),其中50x展示的是错误页面,index是访问成功展示的默认页面(可修改)
- logs(用来记录访问日志),access.log记录访问时间及访问地址,errror.log记录访问出错
基本运行原理![](https://i-blog.csdnimg.cn/blog_migrate/2e8f135bc339629ec85be024e2f183b5.png)
nginx响应请求时过程为:首先nginx主目录下的sbin文件中的nginx的可执行文件开始运行,之后会开启Master的主进程,主进程里会把配置文件读取并检验(检查配置文件是否有错误),如果没有错误会开启子进程worker,子进程开启后才是真正运行在服务器的多个进程之一,子进程和主进程都启动后会等待用户的请求接入进来,用户请求接入是由worker来响应并解析,此时在了解用户的请求后worker会读取conf目录下的nginx.conf里面记录着用户请求的对象的站点在哪,worker就会根据指引去对应的位置寻找,找到后就会开始加载。
在以上过程中会有多个子进程同时完成用户请求,而master进程则负责协调子进程。在完成请求后worker就会被删掉,新的worker去读取新的文件。
Nginx基础配置
配置文件:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8080; #监听端口8080
server_name localhost; #本地服务器
# location 是匹配路径 以 "/" 开头 (非严格匹配)
location / {
root html;
index indexdemo.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# # location 是匹配路径 以 "/" 开头 (非严格匹配)
# location / {
# root html/web;
# index index.html;
# }
# location 是匹配路径 以 "/api/" 开头 (非严格匹配)
location /api/ {
# rewrite 重写路径 (正则匹配)
rewrite ^/api/(.*)$ /$1 break;
# proxy_pass 反向代理路径 注意尾部的$1 是为了处理不在根目录下html
#请求
proxy_pass http://47.97.155.31:8082/$1;
}
}
}
- worker_processes :worker_processes 1; 默认为1,表示开启一个业务进程
- events:事件驱动模块
- worker_connections :worker_connections 1024; 单个业务进程可接受连接数
- include mime.types: 引入http mime类型到主配置文件中,mime.types表明返回文件是什么类型的(由服务器端定义),具体类型可以打开mime.type查看(并不包含所有类型,可以自行添加)
- default_type application/octet-stream; 如果mime类型没匹配上,默认使用二进制流的方式传输。
- sendfile on; 使用linux的 sendfile(socket, file, len) 高效网络传输,也就是数据0拷贝(0拷贝就是免除了中间拷贝过程比如拷贝到U盘)。
- keepalive_timeout 65;保持连接,超时时间。1
- server,一个server表示一个主机。listen就是这台主机的监听端口(主机的监听端口不可以重复),sever_name表示当前主机的主机名(可以在此配置域名或主机名),location为匹配路径,root即接收用户请求后找寻对应网页的目录。