Nginx配置入门(一):认识配置文件
认识Nginx配置文件
在上一篇文章中已经安装好Nginx,其默认的配置文件在/usr/local/nginx/conf/nginx.conf中。其中大部分配置都被注释掉了,下面展示一下配置文件的基本结构。
user nobody;
worker_processes 1;
error_log /var/log/nginx/error.log error;
#pid logs/nginx.pid
events {
use epoll;
worker_connections 50000;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr [$time_local] "$request"'
'$status $bytes_sent "$http_referer"'
'"$http_user_agent" "$http_x_forward_for"';
access_log logs/access.log main buffer=32k;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x/html {
root html;
}
}
}
1 块配置项
块配置项由一个块配置项名和一对大括号组成。
上述代码中的events http server location都是块配置项,块配置项名之后是否有参数取决于解析这个块配置项的模块,不能一概而论。但,块配置项一定会用大括号把一些列所属的配置项全包含起来,表示大括号内的配置项全部生效。
块配置项可以嵌套。内层块直接继承外层块。当内外层块中的配置发生冲突时,具体以哪层配置为准取决于解析这个配置的模块。事实上,Nginx的设计是非常灵活的,它在每一个http块、server块或location块下,都会生成独立的数据结构来存放配置项。因此,当内外层块中的配置发生冲突时,是以内部块的值为准。
2 配置项的语法格式
配置项名 配置项值1 配置项值2 ...;
首先在行首的是配置项名,这些配置项名必须是某一个模块想要处理的,否则Nginx会认为配置文件出现了非法的配置项名。配置项名之后以空格作为分隔符。
其次是配置项值,它可以是数字或字符串(当然也包括正则表达式)。针对一个配置项,对应的配置项值究竟有多少个取决于这个配置项的模块。
最后,每行配置的结尾需要加上分号。
3 配置项的注释
#pid logs/nginx.pid
4 配置项的单位
大部分模块遵循一些通过的规定,当指定空间大小时,可以使用的单位包括:
- K或者k 千字节
- M或者m 兆字节
当指定时间时,可以用的单位包括:
- ms(毫秒),s(秒),m(分钟),h(小时),d(天),w(周),m(月),y(年)
注意 配置项后的值究竟是否可以使用单位,取决于模块解析时是否使用了Nginx框架提供的响应解析配置项方法。
5 配置项中使用变量
log_format main '$remote_addr [$time_local] "$request"'
'$status $bytes_sent "$http_referer"'
'"$http_user_agent" "$http_x_forward_for"';
变量前添加$符号。
需要注意的是,这种变量并不是通用的,只有少数模块支持。许多模块在解析请求时都会提供多个变量,以使其他模块的配置可以即时使用。我们在学习每个模块的配置说明时可以关注一下它提供的变量。