不懂运维的开发人员能走多远?快来学习一下 Nginx 的配置吧!

第一时间获取技术干货和业界资讯!

不懂运维的开发人员能走多远?快来学习一下 Nginx 的配置吧!

☞ 免费CSDN资料帮下服务 | 免费加群 ☜

基本上每个软件或框架都提供的有配置文件。比如,Tomcat 有配置文件,Apache 也有,Spring Boot 也有,nginx 也不例外。其中 nginx 的配置文件最过于复杂,其实也不复杂,因为你没完全理解 nginx 的配置语法,等你理解后,会发现原来是如此的简单。

Nginx 的配置语法,大概有下面 7 个规则构成。

不懂运维的开发人员能走多远?快来学习一下 Nginx 的配置吧!

每个配置文件都由指令块和指令构成。指令块是由 {} 大括号构成,一个指令块内可以包含多个指令。每个指令以 ; 分号结尾。

指令与参数之间以空格分割,多个空格也可以。# 是用来注释的,# 行后面的全为注释,# 代表的是单行注释。

$ 符合代表变量,变量有自定义变量和系统提供的变量。部分指令的参数支持正则表达式,比如:location 指令。

include 语句,或者说 include 指令允许引入多个其他配置文件。

具体每个指令的参数是什么?几个参数?是否支持正则表达式?等都是由具体的模块决定的。

扫描二维码关注公众号,回复: 12830241 查看本文章

常见的指令块有 4 个,分别是:http 指令、server 指令、location 指令、upstream 指令。掌握这 4 个基本上就可以天下通吃!

nginx 的各个模块组合形成了其强大的处理能力,而每个模块只实现一个特定的功能。比如限流功能由模块 ngx_http_limit_conn_module 或者自定义模块实现 ngx_http_limit_req_module;fastcgi 转发功能由模块 ngx_http_fastcgi_module 实现;proxy 转发功能由 ngx_http_proxy_module(当然转发功能的实现还必须有模块 ngx_http_upstream_module)。

当我们配置了指令 proxy_pass 或者 fastcgi_pass 时,该指令应该由哪个模块来解析呢?显然应该由实现此功能的模块来解析。即 nginx 配置文件的解析是分散到各个模块的。

每个模块都有一个 commands 数组,存储该模块可以解析的所有配置指令。指令结构体由 ngx_command_t 定义:

不懂运维的开发人员能走多远?快来学习一下 Nginx 的配置吧!

上面结构体解释如下:

不懂运维的开发人员能走多远?快来学习一下 Nginx 的配置吧!
常用的 type 指令类型如下:

不懂运维的开发人员能走多远?快来学习一下 Nginx 的配置吧!

常用的 4 个指令块对应的模块都非常的复杂,具体参见 nginx 的源代码就知道了。本文主要阐述一个事实,nginx 的配置文件并不复杂,全都有指令或指令块构成,摸通它的构成即可。后面我们会通过具体的实例来学习每个指令的用法。

猜你喜欢

转载自blog.51cto.com/15127565/2667812