结构
.tar.gz 包目录结构
1、auto:编译相关的脚本
2、CHANGES:版本变更记录
3、CHANGES.ru:俄文的版本变更记录
4、conf:默认的配置文件
5、configure:自动脚本程序
(1)检测环境,根据环境检测结果,生成 C 代码
(2)生成编译代码,所需 Makefile 文件
6、contrib:特殊的脚本文件,其中 README 中有对脚本的详细说明
7、html:自带的两个 html 页面,访问 Nginx 首页、错误页面
8、LICENSE:许可证的相关描述文件
9、man:man 手册
10、README:阅读指南
11、src:源代码
安装目录结构
1、conf:Nginx 所有配置文件目录
(1)CGI:Common Gateway Interface,通用网关接口,服务端获取到请求和数据后,调用 CGI 程序处理、返回相应结果到客户端的一种标准规范
(2)fastcgi.conf:fastcgi 相关配置文件
(3)fastcgi.conf.default:fastcgi.conf 备份文件
(4)fastcgi_params:fastcgi 参数文件
(5)fastcgi_params.default:fastcgi 参数备份文件
(6)scgi_params:scgi 参数文件
(7)scgi_params.default:scgi 参数备份文件
(8)uwsgi_params:uwsgi 参数文件
(9)uwsgi_params.default:uwsgi 参数备份文件
(10)mime.types:记录 HTTP 协议中的 Content-Type 的值及文件后缀名的对应关系
(11)mime.types.default:mime.types 备份文件
(12)nginx.conf:Nginx 核心配置文件
(13)nginx.conf.default:nginx.conf 备份文件
(14)koi-utf、koi-win、win-utf:与编码转换映射相关的配置文件,用来将一种编码转换成另一种编码
2、html:存放 Nginx 自带的两个静态 html 页面
(1)50x.html:访问失败后的页面
(2)index.html:成功访问的默认首页
3、logs:记录日志
(1)access.log:访问日志,Nginx 在处理完请求后,立即在访问日志中写入有关客户请求的信息
(2)error.log:错误日志,写下关于遇到的不同严重程度的问题的信息
(3)nginx.pid:写入 master 进程 pid
4、sbin:存放执行程序文件 nginx
(1)nginx:控制 Nginx 启动、停止等相关命令
核心配置文件结构
1、默认位置:/usr/local/nginx/conf/nginx.conf
2、配置格式
指令名 指令值;
3、默认三大块:全局块、events 块、http 块
(1)http 块中可以配置多个 server 块
(2)每个 server 块可以配置多个 location 块
#全局块,主要设置Nginx服务器整体运行的配置指令
worker_processes 1;
#events块,主要设置Nginx服务器与用户的网络连接,此部分对Nginx服务器的性能影响较大
events {
worker_connections 1024;
}
#http块,配置代理、缓存、日志记录、第三方模块等
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#server块,Nginx配置虚拟主机相关内容
server {
listen 80;
server_name localhost;
#location块,基于Nginx服务器接收请求字符串,与location后面的值进行匹配,对特定请求进行处理
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
全局块
1、user
(1)配置运行 Nginx 服务器的 worker 进程的用户和用户组
(2)语法
user username [usergroup];
(3)默认值
user username [usergroup];
(4)位置:全局块
(5)该属性也可以在编译的时候指定,语法:./configure --user=username --group=group
(6)若编译、配置文件都设置,以配置文件为准
2、master_process
(1)是否开启工作进程
(2)语法
master_process on|off;
(3)默认值
master_process on;
(4)位置:全局块
3、worker_processes
(1)配置 Nginx 生成工作进程的数量
(2)理论上 workder process 值越大,可以支持的并发处理量也越多,但事实上受到服务器自身限制,建议将该值和服务器 CPU 内核数保存一致
(3)语法
worker_processes num/auto;
(4)默认值
worker_processes 1;
(5)位置:全局块
3、daemon
(1)设定 Nginx 是否以守护进程的方式启动
(2)守护式进程:Linux 后台执行的一种服务进程,独立于控制终端,不会随着终端关闭而停止
(3)语法
daemon on|off;
(4)默认值
daemon on;
(5)位置:全局块
4、pid
(1)配置 Nginx 当前 master 进程 pid 存储的文件路径
(2)该属性可以通过 ./configure --pid-path=PATH 指定
(3)语法
pid file;
(4)默认值
pid file :/usr/local/nginx/logs/nginx.pid;
(5)位置:全局块
5、error_log
(1)配置 Nginx 错误日志存放路径
(2)该属性可以通过 ./configure --error-log-path=PATH 指定
(3)语法
error_log file [日志级别];
(4)默认值
error_log logs/error.log error;
(5)位置:全局块、http、server、location
(6)日志级别(从低到高):debug、info、notice、warn、error、crit、alert、emerg
(7)不要设置为 debug / info,因为会带来大量的磁盘 I/O 消耗,影响 Nginx 性能
6、include
(1)引入其他配置文件,使 Nginx 配置更加灵活
(2)语法
include file;
(3)默认值:无
(4)位置:任意
events 块
1、accept_mutex:设置 Nginx 网络连接序列化
(1)语法
accept_mutex on|off;
(2)默认值
accept_mutex on;
(3)位置:events
(4)解决惊群问题:某一个时刻,客户端发送一个请求连接,多个 worker 进程会被同时唤醒,但是最终只会有一个进程可以获取到连接,如果每次唤醒的进程数目太多,就会影响 Nginx 整体性能
(5)若开启,将会对多个 Nginx 进程接收连接进行序列化,顺序唤醒接收,防止多个进程对连接的争抢
2、multi_accept
(1)设置是否允许同时接收多个网络连接
(2)语法
multi_accept on|off;
(3)默认值
multi_accept off;
(4)位置;events
(5)如果 multi_accept 为 off,Nginx 一个工作进程只能同时接受一个新的连接,否则,一个工作进程可以同时接受所有的新连接
3、worker_connections
(1)配置单个 worker 进程最大的连接数
(2)语法
worker_connections number;
(3)默认值
worker_commections 512;
(4)位置:events
(5)此处连接数不只包括和前端用户建立的连接数,而是包括所有可能的连接数
(6)number 值不能大于操作系统支持打开的最大文件句柄数量(1024)
4、use
(1)Nginx 服务器选择哪种事件驱动,来处理网络消息
(2)语法
use method;
(3)默认值:根据操作系统定
(4)位置:events
(5)method 可选值:select / poll / epoll / kqueue 等
http 块
1、MIME-Type:网络资源的媒体类型,区分前端请求的资源类型
2、Nginx 默认配置
include mime.types;
default_type application/octet-stream;
3、default_type
(1)配置 Nginx 响应前端请求默认 MIME 类型
(2)语法
default_type mime-type;
(3)默认值
default_type text/plain;
(4)位置:http、server、location
(5)mime.types 文件中 MIMT 类型,与相关类型文件的文件后缀名的对应关系,加入到当前的配置文件中
include mime.types;
(6)如果请求逻辑简单,则可以使用 Nginx 快速实现,不用编写程序响应请求,可以减少服务器资源占用,并且响应性能非常快
4、access_log
(1)设置用户访问日志的相关属性
(2)语法
access_log path[format[buffer=size]]
(3)默认值
access_log logs/access.log combined;
(4)位置:http、server、location
5、log_format
(1)指定日志的输出格式
(2)语法
log_format name [escape=default|json|none] string……;
(3)默认值
log_format combined "……";
(4)位置:http
6、sendfile
(1)设置 Nginx 服务器是否使用 sendfile() 传输文件,该属性可以极大提高 Nginx 处理静态资源的性能
(2)语法
sendfile on|off;
(3)默认值
sendfile off;
(4)位置:http、server、location
7、keepalive 模式
(1)HTTP 是一种无状态协议,客户端向服务端发送一个 TCP 请求,服务端响应完毕后断开连接
(2)告知服务器端在处理完一个请求后,保持该 TCP 连接的打开状态,若接收到来自这个客户端的其他请求,服务端就会利用这个未被关闭的连接,而不需要重新创建一个新连接,提升效率,但此连接会有超时时间
8、keepalive_timeout
(1)设置长连接的超时时间
(2)语法
keepalive_timeout time;
(3)默认值
keepalive_timeout 75s;
(4)位置:http、server、location
9、keepalive_requests
(1)设置一个 keep-alive 连接使用的次数
(2)语法
keepalive_requests number;
(3)默认值
keepalive_requests 100;
(4)位置:http、server、location
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战