核心功能

在Nginx配置文件总可以把配置文件的结构如下:

            main配置段
event {
...
}
http {
...
server {
server_name
root
location /uri/ {
...
}
}
server {
...
}
}

在Nginx中每个参数都会有自己所在的Context,有的只能在指定的Context使用,而有的配置可以在多个Context中使用。下面介绍的是main 段的和event端的相关配置。

main配置段

daemon

Syntax: daemon on | off;
Default: daemon on;
Context: main

确定nginx是否应该成为守护进程。 主要用于开发过程中。

env

Syntax: env variable[=value];
Default: env TZ;
Context: main

默认情况下,nginx删除从其父进程继承的所有环境变量,除了TZ变量。 此指令允许保留一些继承的变量,更改其值或创建新的环境变量。 详细参考

events

Syntax: events { ... }
Default: —
Context: main

提供配置文件上下文,其中指定了影响连接处理的指令。

load_module

Syntax: load_module file;
Default: —
Context: main
This directive appeared in version 1.9.11.

加载动态模块。此伪指令出现在1.9.11版本中。

lock_file

Syntax: lock_file file;
Default: lock_file logs/nginx.lock;
Context: main

nginx使用锁定机制来实现accept_mutex和序列化对共享内存的访问。 在大多数系统上,锁是使用原子操作实现的,并且此伪指令被忽略。

master_process

Syntax: master_process on | off;
Default: master_process on;
Context: main

是否以master/worker模型运行nginx;

pcre_jit

Syntax: pcre_jit on | off;
Default:
pcre_jit off;
Context: main
This directive appeared in version 1.1.12.

启用或禁用对配置解析时间已知的正则表达式使用“即时编译”(PCRE JIT)。
PCRE JIT可以加速正则表达式的处理。
JIT在PCRE库中可用,从使用--enable-jit配置参数构建的8.20版本开始。 当PCRE库使用nginx(--with-pcre =)构建时,通过--with-pcre-jit配置参数启用JIT支持。

pid

Syntax: pid file;
Default: pid nginx.pid;
Context: main

指定nginx进程的pid文件路径;

ssl_engine

Syntax: ssl_engine device;
Default: —
Context: main

定义硬件SSL加速器的名称。

thread_pool

Syntax: thread_pool name threads=number [max_queue=number];
Default: thread_pool default threads=32 max_queue=65536;
Context: main
This directive appeared in version 1.7.11.

定义用于多线程读取和发送文件的命名线程池,而不阻塞worker进程。

timer_resolution

Syntax: timer_resolution interval;
Default: —
Context: main

该配置指令允许用户减少调用gettimeofday()的次数。默认情况下,该函数在每次I/O端口监听(比如epoll_wait)返回后都将被调用,而通过timer_resolution配置选项可以直接指定调用gettimeofday()函数的间隔时间。

user

Syntax: user user [group];
Default: user nobody nobody;
Context: main

定义worker进程使用的用户和组凭证。 如果省略group,则使用名称等于user的组。

worker_cpu_affinity

Syntax: worker_cpu_affinity cpumask ...;
worker_cpu_affinity auto [cpumask];
Default: —
Context: main

将worker进程绑定到CPU核心。 每个CPU核心由允许的CPU的位掩码表示。 应该为每个worker进程定义一个单独的核心。 默认情况下,worker进程不绑定到任何特定的CPU。
一个四核CPU可以做如下配置:

worker_processes    4;
worker_cpu_affinity 0001 0010 0100 1000;

上面是绑定每个worker 进程到指定的CPU上,而下面的:

worker_processes    2;
worker_cpu_affinity 0101 1010;

将第一个worker进程绑定到CPU0 / CPU2,将第二个worker进程绑定到CPU1 / CPU3。 第二个例子适用于超线程。
特殊值auto(1.9.10)允许将worker进程自动绑定到可用的CPU:

worker_processes auto;
worker_cpu_affinity auto;

worker_priority

Syntax: worker_processes number | auto;
Default: worker_processes 1;
Context: main

定义worker进程的调度优先级,就像由nice命令完成的:负数意味着更高的优先级。 允许范围通常在-20到20之间变化。

worker_processes

Syntax: worker_processes number | auto;
Default: worker_processes 1;
Context: main

worker进程的个数;通常应该为物理CPU核心数量减1;可以为"auto",实现自动设定;

worker_rlimit_core

Syntax: worker_rlimit_core size;
Default: —
Context: main

更改worker进程最大核心文件大小(RLIMIT_CORE)的限制。用于在不重新启动主进程的情况下增加限制。

worker_rlimit_nofile

Syntax: worker_rlimit_nofile number;
Default: —
Context: main

更改worker进程最大打开文件数(RLIMIT_NOFILE)的限制。用于在不重新启动主进程的情况下增加限制。

working_directory

Syntax: working_directory directory;
Default: —
Context: main

定义worker进程的当前工作目录。 它主要用于编写核心文件,在这种情况下,worker进程应该具有指定目录的写入权限。

event 配置段

accept_mutex

Syntax: accept_mutex on | off;
Default: accept_mutex off;
Context: events

各worker接收用户的请求的负载均衡锁;启用时,表示用于让多个worker轮流地、序列化地响应新请求; 否则,将向所有worker进程通知有关新连接的信息,如果新连接数量较少,则某些worker进程可能只会浪费系统资源。
在版本1.11.3之前,默认值为on。

accept_mutex_delay

Syntax: accept_mutex_delay time;
Default: accept_mutex_delay 500ms;
Context: events

如果启用accept_mutex,则指定如果另一个worker进程当前正在接受新连接,worker进程将尝试重新启动接受新连接的最长时间。

multi_accept

Syntax: multi_accept on | off;
Default: multi_accept off;
Context: events

如果禁用multi_accept,worker进程将一次接受一个新连接。 否则,worker进程将一次接受所有新连接。

use

Syntax: use method;
Default: —
Context: events

指定要使用的连接处理方法。 通常不需要明确指定它,因为nginx将默认使用最有效的方法。

worker_aio_requests

Syntax: worker_aio_requests number;
Default: worker_aio_requests 32;
Context: events
This directive appeared in versions 1.1.4 and 1.0.7.

当使用带有epoll连接处理方法的aio时,为单个worker进程设置未完成的异步I / O操作的最大数量。

worker_connections

Syntax: worker_connections number;
Default: worker_connections 512;
Context: events

每个worker进程所能够响应的最大并发请求数量;应该记住,这个数字包括所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接。 另一个考虑是同时连接的实际数量不能超过打开文件的最大数量的当前限制,可以通过worker_rlimit_nofile更改。
在nginx中设置的最大连接数为:
worker_proceses * worker_connections

其他

include

Syntax: include file | mask;
Default: —
Context: any

将另一个文件或匹配指定掩码的文件包含到配置中。 包含的文件应包含语法正确的指令和块。

error_log

Syntax: error_log file [level];
Default: error_log logs/error.log error;
Context: main, http, mail, stream, server, location

配置日志记录。
第一个参数定义将存储日志的文件。
第二个参数确定日志记录的级别,可以是以下之一:debug,info,notice,warn,error,crit,alert或emerg。 以上的日志级别按严重性递增的顺序列出。 设置特定日志级别将导致记录指定日志级别和更严重日志级别的所有消息。 例如,默认级别error将导致记录错误,crit,alert和emerg消息。 如果省略此参数,则使用error。
出于调试的需要,可以设定为debug;但debug仅在编译时使用了“--with-debug”选项时才有效;

Core functionality.md的更多相关文章

  1. Professional C# 6 and .NET Core 1.0 - Chapter 39 Windows Services

    本文内容为转载,供学习研究.如有侵权,请联系作者删除. 转载请注明本文出处:Professional C# 6 and .NET Core 1.0 - Chapter 39 Windows Servi ...

  2. 从零开始构建一个的asp.net Core 项目(二)

    接着上一篇博客继续进行.上一篇博客只是显示了简单的MVC视图页,这篇博客接着进行,连接上数据库,进行简单的CRUD. 首先我在Controllers文件夹点击右键,添加->控制器 弹出的对话框中 ...

  3. Intel processor brand names-Xeon,Core,Pentium,Celeron----Celeron

    http://en.wikipedia.org/wiki/Celeron Celeron From Wikipedia, the free encyclopedia     Celeron Produ ...

  4. 2019-1-17 前言 C#高级编程(第11版)

    C#已更新为更快的速度.主要版本7.0是2017年3月发布,次要版本7.1和7.2很快发布在2017年8月和2017年12月.通过项目设置,您可以与每个应用程序一起分发,是开源的,不可用仅适用于Win ...

  5. metamask源码学习-metamask-controller.js

    The MetaMask Controller——The central metamask controller. Aggregates other controllers and exports a ...

  6. Guide to Porting MetaMask to a New Environment

    https://github.com/MetaMask/metamask-extension/blob/develop/docs/porting_to_new_environment.md MetaM ...

  7. gopherjs

    An example implementation of a GopherJS client and a Go server using the Improbable gRPC-Web impleme ...

  8. Linux内核配置选项

    http://blog.csdn.net/wdsfup/article/details/52302142 http://www.manew.com/blog-166674-12962.html Gen ...

  9. Build Telemetry for Distributed Services之OpenCensus:C#

    OpenCensus Easily collect telemetry like metrics and distributed traces from your services OpenCensu ...

随机推荐

  1. Java--Stream,NIO ByteBuffer,NIO MappedByteBuffer性能对比

    目前Java中最IO有多种文件读取的方法,本文章对比Stream,NIO ByteBuffer,NIO MappedByteBuffer的性能,让我们知道到底怎么能写出性能高的文件读取代码. pack ...

  2. python之最强王者(1)——python入门简介

    1.Python简介 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. 像Pe ...

  3. java servlet 几种页面跳转的方法及传值

    java servlet 几种页面跳转的方法及传值   java web 页面之间传值有一下这几种方式1.form 表单传递参数2.url地址栏传递参数3.session4.cookie5.appli ...

  4. struts通过action返回json

    其实struts2通过action返回json挺简单的,但是就是老要忘,所以索性写在博客上.好的,开始. 首先是引入必须的jar包: struts2-json-plugin-2.3.24.jar 然后 ...

  5. python tornado websocket 实时日志展示

    一.主题:实时展示服务器端动态生成的日志文件 二.流程: 1. 客户端浏览器与服务器建立websocket 链接,服务器挂起保存链接实例,等待新内容触发返回动作 2. 日志服务器脚本循环去发现新内容, ...

  6. Netty(五)序列化protobuf在netty中的使用

    protobuf是google序列化的工具,主要是把数据序列化成二进制的数据来传输用的.它主要优点如下: 1.性能好,效率高: 2.跨语言(java自带的序列化,不能跨语言) protobuf参考文档 ...

  7. Java基础学习--抽象类与抽象函数

    abstract class 抽象类不能制造对象,但是可以定义变量,赋给这个变量的一定是他非抽象子类的对象: 抽象类中的抽象函数没有函数体,例如:public abstract void move() ...

  8. JS图片自动和可控的轮播切换特效

    点击这里查看效果:http://hovertree.com/texiao/js/1.htm HTML文件代码如下: <!DOCTYPE html> <html xmlns=" ...

  9. 这个jQuery导航菜单怎么样

    效果体验:http://keleyi.com/keleyi/phtml/jqtexiao/39.htm HTML文件代码: <!DOCTYPE html> <html xmlns=& ...

  10. 用CAShapeLayer实现一个简单的饼状图(PieView)

    自己写了一个简单的PieView,demo在这里:https://github.com/Phelthas/LXMPieView 效果如图: 参考了https://github.com/kevinzho ...