参考来源:
在线文档:Nginx开发从入门到精通,https://docs.pythontab.com/nginx/nginx-book/
极客专栏:nginx核心100讲,作者:陶辉
书籍:《深入理解Nginx:模块开发与架构解析》第二章
参考来源:https://blog.csdn.net/benshu_001/article/details/139637802
Nginx的三个主要应用场景
静态资源服务
通过本地文件系统提供服务
反向代理服务,缓存,负载均衡
API服务,OpenResty
Nginx 的组成
- Nginx.conf配置文件–控制nginx的行为
- Nginx二进制可执行文件–由各模块源码编译出的个文件
- access.log访问日志–记录每一条http请求信息
- error.log错误日志–定位问题
Nginx配置解读
配置语法
01配置文件由指令与指令块构成
02每条指令以;分号结尾,指令与参数间以空格符号分隔
03指令块以(大括号将多条指令组织在一起
04include语句允许组合多个配置文件以提升可维护性
05使用符号添加注释,提高可读性
06使用$符号使用变量
07部分指令的参数支持正则表达式
nginx的模块分类
第二章:Nginx的配置(来自书籍:深入理解Nginx:模块开发与架构解析)
本章的目的是熟悉Nginx的配置文件,包括配置文件的语法格式、运行所有Nginx服务必须具备的基础配置以及使用HTTP核心模块配置静态Web服务器的方法,最后还会介绍反向代理服务器。
通过本章的学习,读者可以:熟练地配置一个静态Web服务器;对影响Web服务器性能的各个配置项有深入的理解;对配置语法有全面的了解。通过互联网或其他途径得到任意模块的配置说明,然后可通过修改nginx.conf文件来使用这些模块的功能
块配置项
块配置项由一个块配置项名和一对大括号组成。
块配置项一定会用大括号把一系列所属的配置项全包含进来,表示大括号内的配置项同时生效。所有的事件类配置都要在events块中,http、server等配置也遵循这个规定。
块配置项可以嵌套。内层块直接继承外层块
配置项的语法格式
配置项名 配置项值 1 配置项值 2……;
配置项的构成部分
首先,在行首的是配置项名,这些配置项名必须是Nginx的某一个模块想要处理的,否则Nginx会认为配置文件出现了非法的配置项名
其次是配置项值,它可以是数字或字符串(当然也包括正则表达式)。针对一个配置项,既可以只有一个值,也可以包含多个值,配置项值之间仍然由空格符来分隔。
最后,每行配置的结尾需要加上分号。
注意 如果配置项值中包括语法符号,比如空格符,那么需要使用单引号或双引号括住配置项值,否则Nginx会报语法错误。
配置项的注释
如果有一个配置项暂时需要注释掉,那么可以加"#"注释掉这一行配置
配置项的分类(四类)
由于配置项较多,所以把它们按照用户使用时的预期功能分成了以下4类(分类依据)
❑用于调试、定位问题的配置项。
❑正常运行的必备配置项。
❑优化性能的配置项。
❑事件类配置项(有些事件类配置项归纳到优化性能类,这是因为它们虽然也属于events{}块,但作用是优化性能)。
Nginx配置文件概述
Nginx的配置文件通常位于/etc/nginx/nginx.conf,但也可以通过命令行参数指定不同的配置文件。配置文件由指令和指令块组成,指令块可以嵌套,形成一个层次结构。每个指令块定义了一个特定的上下文,比如事件(events)、HTTP(http)、服务器(server)和位置(location)。
配置文件基本结构
一个典型的Nginx配置文件包括以下几个部分:
全局指令(main):配置影响Nginx全局的指令,如用户(user)、pid(pid)、日志级别(log level)和工作进程数(worker_processes)。
事件指令(events):配置与客户端连接处理相关的指令,如工作进程可以打开的连接数(worker_connections)。
HTTP指令(http):配置HTTP服务器和虚拟主机的指令,通常包含一个或多个server块。
服务器指令(server):定义虚拟主机的配置,可以包含多个location块。
位置指令(location):处理特定URL模式的配置。
关键指令
user:定义Nginx运行的用户和用户组。
worker_processes:设置Nginx工作进程的数量。
pid:指定Nginx进程ID文件的路径。
events:包含与事件处理相关的指令,如worker_connections。
http:包含与HTTP服务器相关的指令,如server块。
server:定义虚拟主机,可以包含listen、server_name、root等指令。
location:处理特定URL模式的指令块。
配置文件结构
nginx在ubuntu1804上的安装后的配置文件结构
root@ub1804:/etc/nginx# tree
.
├── conf.d
├── fastcgi.conf
├── fastcgi_params
├── koi-utf
├── koi-win
├── mime.types
├── modules-available
├── modules-enabled
│ ├── 50-mod-http-geoip.conf -> /usr/share/nginx/modules-available/mod-http-geoip.conf
│ ├── 50-mod-http-image-filter.conf -> /usr/share/nginx/modules-available/mod-http-image-filter.conf
│ ├── 50-mod-http-xslt-filter.conf -> /usr/share/nginx/modules-available/mod-http-xslt-filter.conf
│ ├── 50-mod-mail.conf -> /usr/share/nginx/modules-available/mod-mail.conf
│ └── 50-mod-stream.conf -> /usr/share/nginx/modules-available/mod-stream.conf
├── nginx.conf
├── proxy_params
├── scgi_params
├── sites-available
│ └── default
├── sites-enabled
│ └── default -> /etc/nginx/sites-available/default
├── snippets
│ ├── fastcgi-php.conf
│ └── snakeoil.conf
├── uwsgi_params
└── win-utf