Nginx核心模块常用指令

配置示例

user www www;

worker_processes 2;

error_log /var/log/nginx-error.log info;

events {

use kqueue;

worker_connections 2048;

}

accept_mutex

用法 accept_mutext on | off;

默认值 off,在1.11.3版本前是on.

在events块中使用。

如果开启了这个指令,那么worker进程就会按顺序接受新的连接。否则所有的worker进程只是被通知有新的连接进入,而且如果新的连接数很少,那么有些worker进程可能会浪费一些系统资源。

accept_mutex_delay

用法 accept_mutex_delay time;

默认值 500ms

在events块中使用。

如果开启了这个指令,那么需要指定一个worker进程尝试重新接受新连接的时间(当另一个进程正在接受新连接的话)。

daemon

用法:daemon on| off;

默认值 on

在main块中使用。

此指令用于决定nginx是否以daemon方式运行,主要在开发环境中使用。

error_log

用法:error_log file [level];

默认值 error_log logs/error.log error;

在main,http,mail(1.7.11+),stream(1.9.0+),server,location块中使用。

如果在main块中没有显示指定log,则会使用默认的log。

第一个参数file用于指定存放log的位置。

第二个参数level用于指定log的级别,可能的值有debug,info,notice,warn,error,crit,alert,emerg.

注意:如果想开启debug日志,则在构建nginx的时候需要加上—with-debug参数。

env

用法 env 变量[=变量值];

默认值 env TZ;

在main块中使用。

默认情况下,除了TZ变量外,nginx会移除所有从父进程继承而来的环境变量。

这个指令允许保留一些继承而来的变量或改变变量的值或创建新的变量。

这些变量可在live upgrade一个可执行文件的时候被继承或者被ngx_http_perl_module和worker进程使用。

使用示例:

env MALLOC_OPTIONS;

env PERL5LIB=/data/site/modules;

env OPENSSL_ALLOW_PROXY_CERTS=1;

注意:nginx的环境变量应该由nginx内部使用而不应该直接由用户指定。

events

用法 events {…}

无默认值,在main块中使用。

用于提供配置文件的上下文环境来指定可以影响连接处理的指令。

include

用法 include 文件|掩码;

无默认值

可在任何块中使用。

用于包含进另一个文件或者将与掩码相匹配的文件指定到配置中,被包含进来的文件内容需要保证在语法上是正确可用的。

使用示例:

include mime.types;

include vhosts/*.conf;

load_module

用法 load_module 文件

无默认值,在main块中使用。

此指令从1.9.11版本开始才有。

用于加载一个动态的模块。

示例:

load_module modules/ngx_mail_module.so;

lock_file

用法 lock_file 文件

默认值 lock_file logs/nginx.lock

在main块中使用。

nginx使用锁机制来实现accept_mutex然后将访问序列化到共享内存。在多数系统中锁是用原子操作实现的,这种情况下这个指令是被忽略的。在另一些系统中使用锁文件机制,这个指令用于指定锁文件名的前缀。

multi_accept

用法 multi_accept on | off

默认值 off

在events块中使用。

如果multi_accept被禁用,那么worker进程一次只能接受一个新的连接。否则worker进程则一次会接受所有的新连接。

注意:如果使用的是kqueue的连接处理方法,那么开启这个指令是无效的。

pid

用法 pid 文件

默认值 pid nginx.pid;

在main块中使用。

用于定义存储主进程id号的文件。

ssl_engine

用法 ssl_engine 设备;

无默认值,在main块中使用。

用于指定硬件ssl加速器的名。

thread_pool

用法 thread_pool 名字 threads=数量 [max_queue=数量];

默认 thread_pool default threads=32 max_queue=65536;

在main块中使用。

此指令从1.7.11版本开始支持。

用于定义以多线程读和以非阻塞worker进程方式发送文件的线程池名。

threads参数用于指定线程池中线程的数量。

如果池中的线程都很忙,那么新的任务将被放到queue中等待处理。max_queue参数是指定可放在queue中等待处理的最大任务数,默认是65536,如果queue溢出了,那么任务将以错误的方式被完成。

use

用法 use 方法;

无默认值,在events块中使用。

用于指定连接处理的方法。正常情况下不需要显示指定,因为nginx默认会使用最有效的方法。

user

用法 user 用户 用户所在的组;

默认值 user nobody nobody;

在main块中使用。

定义worker进程所要使用的用户和组,如果没有设置组,那么一个与用户相同的组名将会被使用。

worker_connections

用法 worker_connections number;

默认值 512。

在events块中使用。

用于设定一个worker进程同时可以打开的最大连接数。

要记住的是这个连接数是包括了所有的连接(比如与代理服务器或其它的连接),而不仅仅是与客户端的连接。另外要考虑的是同时可以打开的连接数不可以超过最大可打开文件数的限制,最大可打开文件数的限制可通过worker_rlimit_nofile指令来修改。

worker_cpu_affinity

用法 worker_cpu_affinity cpumask…;

worker_cpu_affinity auto [cpumask];

无默认值,在main块中使用。

将worker进程绑定到指定的cpu核上,每个cpu核都可以用位掩码来表示。每个worker进程都可以独立设置。默认的情况下,worker进程是没有绑定到任何cpu核上的。

例如:

worker_processes 4;

worker_cpu_affinity 0001 0010 0100 1000;

绑定每个worker进程到单独的cpu

worker_processes 2;

worker_cpu_affinity 0101 1010;

这里第一个worker进程被绑定到了cpu0/cpu2,而第二个进程绑定到了cpu1/cpu3。这个例子适合超线程情况。

从1.9.0版本开始支持auto参数,即允许worker进程自动绑定到可用的cpu上。

worker_processes auto;

worker_cpu_affinity auto;

可选的cpumask选项用于限制可供worker进程自动绑定的可用的cpu数。

worker_cpu_affinity auto 01010101;

这个指令只在FreeBSD和Linux上才适用。

worker_priority

用法 worker_priority number;

默认值 0

在main块中使用。

指定worker进程被调度的优先级,就像在nice命令中所做的那样。负数意味着更高的优先级,优先级范围从-20到20。

例如:

worker_priority -10;

worker_processes

用法 worker_processes number|auto;

默认值 1

在main块中使用。

用于指定worker进程的数量。

可选的值取决于许多因素,包括但不仅限于cpu的核数,用于存储数据的磁盘驱动器数以及加载模式。当不清楚如何设定时,那么将此值设定成与cpu核数一样通常是一个好实践。

注意:auto 参数从1.3.8和1.2.5版本才开始有。

worker_rlimit_core

用法 worker_rlimit core size;

无默认值,在main块中使用。

用于更改worker进程的core-file(RLIMIT_CORE)的最大数量大小。主要用于无需重启主进程的情况下提高限制的大小。

worker_rlimit_nofile

用法 worker_rlimit_nofile number;

无默认值,在main中使用。

用于更改worker进程可打开的最大文件数(RLIMIT_NOFILE)的限制。主要用于无需重启主进程的情况下提高限制的大小。

worker_shutdown_timeout

用法 worker_shutdown_timeout time;

无默认值,在main块中使用。

这个指令从1.11.11版本开始才有。

配置worker进程优雅关闭前需要等待的超时时间。当超时时间已到,则nginx将尝试关闭所有当前已打开的连接用于关闭进程。

working_directory

用法 working_directory directory;

无默认值,在main块中使用。

定义一个worker进程的当前工作目录。主要用于当写一个core-file时,worker进程有写指定目录的权限。

原文发布于微信公众号 - IT技术精选文摘(ITHK01)

原文发表时间:2017-08-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏smy

Java JDK安装小谈

我用的是当前最新版jdk-7u10-windows-i586。 安装时有两个需要选择的安装路径,一个是JDK一个是JRE。两个最好安装在同一文件夹下。 jr...

3385
来自专栏移动安全

移动安全-api使用方式介绍

windows 环境请访问 Composer官网 下载安装包安装。unix 环境在命令行中执行以下命令安装。

7127
来自专栏進无尽的文章

基础篇-Mac终端指令大全

在日常开发中我们经常会用到一些Mac的指令在终端中进行操作,所以了解和熟练使用一些基本的Mac终端指令是非常有必要的,也有利于自己的职业发展,下面就简单总结下M...

651
来自专栏猿人谷

df和du显示的磁盘空间使用情况不一致的原因及处理

在Linux下查看磁盘空间使用情况,最常使用的就是du和df了。然而两者还是有很大区别的,有时候其输出结果甚至非常悬殊。 1. 如何记忆这两个命令 du-Dis...

4039
来自专栏coding

bash基础特征

1052
来自专栏移动安全

移动安全-应用加固命令行工具jar包使用说明

为方便用户快速集成到自动化任务中,乐固加固推出命令行工具。该工具是一个jar包(支持基础版、专业版、企业版),提供上传apk、下载加固包功能。下载的加固包需要用...

7458
来自专栏java思维导图

提高效率,eclipse上你可能不知道的技巧

一张思维导图 ? 公众号回复“eclipse技巧”可下载源导图 1、控制台(console )日志输出另保存 经常会遇到这种情况,习惯性的清掉控制台上的输出日志...

2886
来自专栏java一日一条

HttpInvoker运作原理

HttpInvoker是常用的Java同构系统之间方法调用实现方案,是众多Spring项目中的一个子项目。顾名思义,它通过HTTP通信即可实现两个Java系统之...

1195
来自专栏Java 源码分析

Redis基本入门

1.Redis简介     Redis 是一种基于内存亦可持久化的日志型,Key-Value 数据库。可持久在于他的部分数据是存放在内存上,而当数据库重启以后他...

38510
来自专栏小樱的经验随笔

LINUX中常用操作命令

LINUX中常用操作命令 Linux简介及Ubuntu安装 常见指令 系统管理命令 打包压缩相关命令 关机/重启机器 Linux...

4056

扫码关注云+社区