nginx配置文件结构
0 conf结构
分三大部分:全局区/events/http。默认conf 如下
1 全局区
worker_processes 8;
#设定工作进程数,一般等于core数就行。每个进程跑一个core。
#error_log logs/error.log debug;
#error_log logs/error.log notice;
error_log logs/error.log info;
#整个nginx的error log是全局设定的(access.log可以按server设定),这里设定目录和日志等级。
#稳定的线上环境,必然是info。其他两个量太大了。
2 evsnts{}
一般配置nginx连接特性
worker_connections 51200;
#每个工作进程的最大连接数
3 http{}
3.1 日志格式、标签、路径
日志分为log_format和access_log两个参数,前者设定日志标签(main等)定义日志内容和字符串格式,后者设定日志路径和文件名,并采用的日志标签。
在http下定义log_format,log_format是整个http的默认日志路径。在server里可以设定优先的日志路径,用于区分不同server的日志。
如果出现以下报错,是因为需要先在http里将main标签启用。
[root@webmaster nginx]# ./sbin/nginx -s reload nginx: [emerg] unknown log format "main" in /app/nginx-1.12.2/conf/nginx.conf:41
3.2 server{}
一个http{}里可以有多个server{}虚拟主机配置
(这里使用基于域名的配置):设定监听端口为80,域名为jab.com,映射root地址为/data/jab.com,默认index文件为index.html。
3.3 location
不同的URL请求,根据匹配规则,做相应的处理
语法规则:location [=|~|~*|^~] /uri/ { … }
/home/ 如果有/和/home/同时存在,则先匹配更长的/home/
当访问ip/image/x.jpg。/首先会匹配到,然后去/data/jab.com/目录找image/x.jpg。而一般来说静态资源会另外放一个目录,~ image还会匹配一遍,然后停止匹配并把/的匹配覆盖掉。
首先会进行精准匹配,匹配成功则停止-返回,然后普通匹配,对uri,记录最长的匹配结果返回,对正则,第一个匹配的返回。
--conf--
到目前为止的conf
worker_processes 1; error_log logs/error.log debug; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; server { listen 80; server_name jab.com; #charset koi8-r; access_log logs/jab.com.log main; location / { root /data/jab.com/; index index.html index.htm; } location ~ image { root /data/jab.com/res/; } } }