一、Nginx配置项单位
1.配置指定空间大小
配置时可以使用k(不分大小写,可以写为K)或m(不分大小写,可以写为M)作为空间大小的单位。1k=1千字节(KB)、1m=1兆字节(MB)
例如:
gzip_buffers 48K;
client_max_body_size 64M;
2.配置指定时间长短
配置时时可以使用以下单文ms(毫秒),s(秒),m(分钟),h(小时),d(天),w(周,包含7天),M(月,包含30天),y(年,包括365天)。如果不带单位,默认为s(秒),不建议使用不带单位的时间配置。
例如:
expires 10y;
proxy_read_timeout 600;
client_body_timeout 2m;
二、用于调试进程和定位问题的配置项
(1)是否以守护进程方式运行Nginx
语法: daemon on|off;
默认: daemon on;
(2)是否以master/worker方式工作
语法: master_process on|off;
默认: master_process on;
(3)error日志的设置
语法: error_log pathfile level;
默认: error_log logs/error.log error;
例子:
#日志文件路径使用绝对路径,建议使用绝对路径
error /home/logs/error.log;
配置时候,nginx安装路径/sbin/下执行./nginx -t 命令检查是否配置错误,若干配置无误,执行./nginx -s reload 命令进行重启
修改日志配置后,安装路径下logs目录中的error.log文件一样会打印ngnix的启动信息,但不会打印错误信息。
#注意,修改Nginx的日志路径,需要在相关的路径路径下新建改文件,否则配置失败
pathfile 等于/dev/null;关闭日志
(4)是否处理几个特殊的调试点
语法: debug_points[stop|abort]
通常不会使用这个配置项。
(5)仅对指定的客户端输出debug级别的日志
语法: debug_connection[IP|CIDR]
例子:
events {
debug_connection 10.10.11.150;
debug_connection 10.224.57.0/24;
}
这样,仅仅来自以上IP地址的请求才会输出debug级别的日志,其他请求仍然沿用error_log中配置的日志级别。
注意:完成此配置安装时需要加上 --with-debug
(6)限制coredump核心转储文件的大小
语法: worker_rlimit_core size;
在Linux系统中,当进程发生错误或收到信号而终止时,系统会将进程执行时的内存内容(核心映像)写入一个文件(core文件),以作为调试之用,这就是所谓的核心转储(core dumps)。当Nginx进程出现一些非法操作(如内存越界)导致进程直接被操作系统强制结束时,会生成核心转储core文件,可以从core文件获取当时的堆栈、寄存器等信息,从而帮助我们定位问题。但这种core文件中的许多信息不一定是用户需要的,如果不加以限制,那么可能一个core文件会达到几GB,这样随便coredumps几次就会把磁盘占满,引发严重问题。通过worker_rlimit_core配置可以限制core文件的大小,从而有效帮助用户定位问题。
(7)指定coredump文件生成目录
语法: working_directory path;
worker进程的工作目录。这个配置项的唯一用途就是设置coredump文件所放置的目录,协助定位问题。因此,需确保worker进程有权限向working_directory指定的目录中写入文件。
三、正常运行的配置项
(1)定义环境变量
语法: env VAR|VAR=VALUE
这个配置项可以让用户直接设置操作系统上的环境变量。
例如:
env TESTPATH=/tmp/;
(2)嵌入其他配置文件
语法: include pathfile;
例如:
include mime.types;
include vhost/*.conf;
(3)pid文件的路径
语法: pid path/file;
默认: pid logs/nginx.pid;
注:linux系统下一切都是文件,所以每一个进程都有其文件描述符,而nginx进程将其自己的文件描述符写入了nginx.pid中,我们需要告诉nginx,让其重新打开一个新的日志文件(日志文件的配置详情可看这里,简单说就是让日志记录什么内容。)于是我们需要这条指令:kill -USR1 `cat ${pid_path}`
(4)Nginx worker进程运行的用户及用户组
语法: user username[groupname];
默认: user nobody nobody;
user用于设置master进程启动后,fork出的worker进程运行在哪个用户和用户组下。当按照“user username;”设置时,用户组名与用户名相同。
若用户在configure命令执行时使用了参数--user=username和--group=groupname,此时nginx.conf将使用参数中指定的用户和用户组。
(5)指定Nginx worker进程可以打开的最大句柄描述符个数
语法: worker_rlimit_nofile limit;
(6)限制信号队列
语法: worker_rlimit_sigpending limit;
设置每个用户发往Nginx的信号队列的大小。也就是说,当某个用户的信号队列满了,这个用户再发送的信号量会被丢掉。