認(rèn)識(shí)Nginx配置文件
在上一篇文章中已經(jīng)安裝好Nginx减牺,其默認(rèn)的配置文件在/usr/local/nginx/conf/nginx.conf中。其中大部分配置都被注釋掉了,下面展示一下配置文件的基本結(jié)構(gòu)。
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 塊配置項(xiàng)
塊配置項(xiàng)由一個(gè)塊配置項(xiàng)名和一對(duì)大括號(hào)組成浮入。
上述代碼中的events http server location都是塊配置項(xiàng),塊配置項(xiàng)名之后是否有參數(shù)取決于解析這個(gè)塊配置項(xiàng)的模塊羊异,不能一概而論事秀。但彤断,塊配置項(xiàng)一定會(huì)用大括號(hào)把一些列所屬的配置項(xiàng)全包含起來,表示大括號(hào)內(nèi)的配置項(xiàng)全部生效易迹。
塊配置項(xiàng)可以嵌套宰衙。內(nèi)層塊直接繼承外層塊。當(dāng)內(nèi)外層塊中的配置發(fā)生沖突時(shí)睹欲,具體以哪層配置為準(zhǔn)取決于解析這個(gè)配置的模塊供炼。事實(shí)上,Nginx的設(shè)計(jì)是非常靈活的窘疮,它在每一個(gè)http塊袋哼、server塊或location塊下,都會(huì)生成獨(dú)立的數(shù)據(jù)結(jié)構(gòu)來存放配置項(xiàng)考余。因此先嬉,當(dāng)內(nèi)外層塊中的配置發(fā)生沖突時(shí),是以內(nèi)部塊的值為準(zhǔn)楚堤。
2 配置項(xiàng)的語法格式
配置項(xiàng)名 配置項(xiàng)值1 配置項(xiàng)值2 ...;
首先在行首的是配置項(xiàng)名,這些配置項(xiàng)名必須是某一個(gè)模塊想要處理的含懊,否則Nginx會(huì)認(rèn)為配置文件出現(xiàn)了非法的配置項(xiàng)名身冬。配置項(xiàng)名之后以空格作為分隔符。
其次是配置項(xiàng)值岔乔,它可以是數(shù)字或字符串(當(dāng)然也包括正則表達(dá)式)酥筝。針對(duì)一個(gè)配置項(xiàng),對(duì)應(yīng)的配置項(xiàng)值究竟有多少個(gè)取決于這個(gè)配置項(xiàng)的模塊雏门。
最后嘿歌,每行配置的結(jié)尾需要加上分號(hào)。
3 配置項(xiàng)的注釋
#pid logs/nginx.pid
4 配置項(xiàng)的單位
大部分模塊遵循一些通過的規(guī)定茁影,當(dāng)指定空間大小時(shí)宙帝,可以使用的單位包括:
- K或者k 千字節(jié)
- M或者m 兆字節(jié)
當(dāng)指定時(shí)間時(shí),可以用的單位包括:
- ms(毫秒)募闲,s(秒)步脓,m(分鐘),h(小時(shí))浩螺,d(天)靴患,w(周),m(月)要出,y(年)
注意 配置項(xiàng)后的值究竟是否可以使用單位鸳君,取決于模塊解析時(shí)是否使用了Nginx框架提供的響應(yīng)解析配置項(xiàng)方法。
5 配置項(xiàng)中使用變量
log_format main '$remote_addr [$time_local] "$request"'
'$status $bytes_sent "$http_referer"'
'"$http_user_agent" "$http_x_forward_for"';
變量前添加$符號(hào)患蹂。
需要注意的是或颊,這種變量并不是通用的砸紊,只有少數(shù)模塊支持。許多模塊在解析請(qǐng)求時(shí)都會(huì)提供多個(gè)變量饭宾,以使其他模塊的配置可以即時(shí)使用批糟。我們?cè)趯W(xué)習(xí)每個(gè)模塊的配置說明時(shí)可以關(guān)注一下它提供的變量。