上一篇的安装和配置静态资源服务,看了官方文档后很快搞出来了,但真正要做到灵活应用,必须得对配置文件有个整体的了解,所以这里不能再继续按照单一功能模块来进行了,插播一篇整体的描述介绍。
/etc/nginx/nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/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 /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
这个是主要配置文件,里面包含了conf.d下的子配置文件,个人认为设计者的主要目的是,conf.d文件夹下主要来配置server
模块,而其他杂项则在nginx.conf里配置。
关键配置解释
user nginx;
这是让nginx以什么用户来用运行,一般情况下是nginx,但如果你的访问目录需要root权限,最好改为user root;
worker_processes 1;
默认是1,如果服务器单运行nginx的话,设置成cpu核数
error_log /var/log/nginx/error.log warn;
记录错误日志,详情参考官方文档,只挑选几个以后可能用到的记录一下:
1、日志级别从小到大排列依次是debug, info, notice, warn, error, crit, alert, emerg
,默认是error
,如果是crit
,则记录的日志包括crit, alert, emerg
2、可以仅为选定的客户端地址启用调试日志
error_log /path/to/log;
events {
debug_connection 192.168.1.1;
debug_connection 192.168.10.0/24;
}
3、调试日志循环写入内存缓冲区的大小error_log memory:32m debug;
pid /var/run/nginx.pid;
进程id,这个没什么好深挖的
events{}
配置块
这个配置块里一般配置每个worker(也就是每核CPU)可以打开的最大并发连接数worker_connections 1024
,原文档里有这么一段描述:
翻译一下大概就是,这个默认的1024连接数,不仅仅是与客户端的连接,而是所有连接,还包括代理服务器的连接等,并且这个值还受worker_rlimit_nofile
配置项的限制,这个配置项的作用域不在events模块,而在main模块,所以要放在外面。这个值一般填写linux的最大文件打开数即ulimit -HSn
指令显示的数量,一般情况下用压测工具来测试一下服务器的连接并发极限,极限值的7折一般就是实际最大承压数,用实际承压数/CPU核数就是单个worker的最大连接数,比如实际承压数是1048576,16核CPU,那么worker_connections的值就是1048576/16=65536,配置如下:
worker_rlimit_nofile 1048576;
events {
worker_connections 65536;
multi_accept on;
use epoll;
}
http {}
配置块
这个模块可配置的内容较少,直接把注释写在配置块里了
http {
#设定mime类型
include /etc/nginx/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 /var/log/nginx/access.log main;
#sendfile 对于普通应用,设为on,调用 sendfile 函数0拷贝输出文件
#如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfile on;
#tcp_nopush on;
#连接超时时间
keepalive_timeout 65;
#gzip on;
#包含其他配置文件目录
include /etc/nginx/conf.d/*.conf;
}
以上就是默认文档的初步解释