Back
Please upgrade your browser or check your network connection.

Nginx配置文件语法


配置文件由指令与指令块构成

1http {
2
3
4}

上面这样的,就是http的指令块

里面所有的指令都是由http来进行解析以及执行。而像stream是没有办法解析以及执行的。

1include mime.types;

上面这一行就是指令。


每条指令以;分号结尾,指令与参数间以空格符号分隔

1expires 3m;proxy_cache_key $host$uri$is_arg$args;

只要指令有;隔开,哪怕你两个指令写在同一行都是可以的。

不过可读性就显而易见了。

记得,不是以回车进行分隔的喔。

=。=

1expires 3m;

这里expires为命令,而后面的3m为参数。使用空格进行分隔。

像下面这种,一个命令-proxy_cache_valid也可以接多个参数-200 304 302 1d

1proxy_cache_valid 200 304 302 1d;

指令块以{ }大括号将多条指令组织在一起

http这个指令块里面放了指令 include upstream

upstream这个指令块里面又放了server指令。

我认为这里,都是相对来说的。对于http指令块来说,include upstream都是它里面的指令。而server对于upstream指令块又是里面的一条指令。

而且你会发现,在这里httpupstream都是可以看做指令块,但是http后面是没有名字的,而upstream后面是跟有名字thwp的。这个特性主要是看模块开发者的,不用过于纠结。文档咋写,我们就咋用。

include语句允许组合多个配置文件以提升可维护性

1include mime.types;

这里的mime.types,其实就是nginx.conf隔壁的一个文件。

截取该文件的部分内容:

 1types {
 2    text/html                                        html htm shtml;
 3    text/css                                         css;
 4    text/xml                                         xml;
 5    image/gif                                        gif;
 6    image/jpeg                                       jpeg jpg;
 7    application/javascript                           js;
 8    application/atom+xml                             atom;
 9    application/rss+xml                              rss;
10    ......
11}

Nginx就是根据文件的后缀名,再根据这个关系表,再将该数据类型写入HTTP头部的Content-Type字段中,发送给客户端。

然后你回头一看,这个文件的内容,我有必要写在nginx.conf里面吗?

这个文件的内容就是相当于一个wiki,只需要用的时候查就行,但是没有它又不行。

一旦你把大量的内容加到nginx.conf,维护起来就GG了。

所以这个时候,使用include这个语法,文件的可读性/可维护性就不知道高到那里去。

使用#符号添加注释,提高可读性。

简单明了,就是注释。

写好注释,起码后面接盘的不会来提刀砍你。

使用$符号使用变量

1proxy_cache_key $host$url$is_args$args;

本身proxy_cache_key这个方法/模块,是不提供后面的这个几个变量的-$host $url $is_args $args

那些变量都是其他模块去提供的。而proxy_cache_key只是去调用而已,调用的方式就是使用$。跟shell的变量调用差不多。

部分指令的参数支持正则表达式

1~* \.(gif|jpg|jpeg)$

这个就是在location处使用了正则表达式。

配置文件中的时间单位

 1ms  milliseconds
 2
 3s   seconds
 4
 5m   minutes
 6
 7h   hours
 8
 9d   days
10
11w   weeks
12
13M   mouths,30days 按照30天算的喔
14
15y   years,365days 按照365天算的喔
16

例子:

1expires    24h;

expires是属于ngx_http_headers_module的一个指令。

用于控制页面的缓存时间。

这里的指令就是把缓存时间设置成24小时

配置文件中的空间单位

1缺省 bytes
2
3k/K kilobytes
4
5m/M megabytes
6
7g/G gigabytes
1Syntax: zone name [size];

zone在Nginx是设置共享内存用的,使得多个worker process在里面共享数据。

1zone=client_sessions:1m