• Nginx主模块
  • 指令
  • daemon
  • debug_points
  • error_log
  • include
  • master_process
  • pid
  • ssl_engine
  • timer_resolution
  • user
  • worker_cpu_affinity
  • worker_priority
  • worker_processes
  • worker_rlimit_core
  • worker_rlimit_nofile
  • worker_rlimit_sigpending
  • working_directory

    Nginx主模块

    这里是控制 Nginx 的基本功能的指令.

    指令

    • [#daemon daemon]
    • [#debug_points debug_points]
    • [#error_log error_log]
    • [#include include]
    • [#lock_file lock_file]
    • [#master_process master_process]
    • [#pid pid]
    • [#ssl_engine ssl_engine]
    • [#timer_resolution timer_resolution]
    • [#user user group]
    • [#worker_cpu_affinity worker_cpu_affinity]
    • [#worker_priority worker_priority]
    • [#worker_processes worker_processes]
    • [#worker_rlimit_core worker_rlimit_core]
    • [#worker_rlimit_nofile worker_rlimit_nofile]
    • [#worker_rlimit_sigpending worker_rlimit_sigpending]
    • [#working_directory working_directory]

      daemon

    语法:*daemon on | off*

    缺省值:*on*

    1. daemon off;

    Do not use the "daemon" and "master_process" directives in a production mode, these options are mainly used for development only. You can use daemon off safely in production mode with runit / daemontools however you can't do a graceful upgrade. master_process off should never be used in production.

    生产环境中不要使用"daemon"和"master_process"指令,这些选项仅用于开发调试。

    debug_points

    语法:*debug_points [stop | abort]*

    缺省值:*none*

    1. debug_points stop;

    There are some assertion points inside nginx that allow to stop nginx to attach the debugger, or to abort and to create the core file.

    应该适用于调试,在调试器内设置断点之类的。

    error_log

    语法:*error_log file [ debug | info | notice | warn | error | crit ]*

    缺省值:*${prefix}/logs/error.log*

    Nginx 添加 —with-debug 编译参数, 你还能够使用以下配置:

    1. error_log LOGFILE [ debug_core | debug_alloc | debug_mutex | debug_event
    2. ]: | debug_http | debug_imap ;

    include

    语法:*include file | **

    缺省值:*none*

    你可以在任意地方使用include指令实现配置文件的包含,类似于apache中的include方法,可减少主配置文件d。

    include 指令还支持像下面配置一样的全局包含的方法,例如包含一个目录下所有以".conf"结尾的文件:

    1. include vhosts/*.conf;

    注意路径受到configure编译参数—prefix=<路径>指令的影响,如果没有指定,Nginx默认是被编译在/usr/local/nginx。

    语法:*lock_file file*

    缺省值:*compile-time option*

    1. lock_file /var/log/lock_file;

    nginx uses accept mutex to serialize accept() syscalls. If nginx is built by gcc, Intel C++, or SunPro C++ compilers on i386, amd64, sparc64, and ppc64, then nginx uses the atomic instructions to implement the mutex. In other cases the lock file would be used.

    master_process

    语法:*master_process on | off*

    缺省值:*on*

    1. master_process off;

    Do not use the "daemon" and "master_process" directives in a production mode, these options are mainly used for development only.

    生产环境中不要使用"daemon"和"master_process"指令,这些选项仅用于开发调试。

    pid

    语法:*pid file*

    缺省值:*compile-time option* Example:

    1. pid /var/log/nginx.pid;

    进程id存储文件。可以使用 kill -HUP cat /var/log/nginx.pid\ 对Nginx进行配置文件重新加载。

    ssl_engine

    语法:*ssl_engine engine*

    缺省值:*system dependent*

    Here you can set your preferred openssl engine if any available. You can figure out which one do you have with the commandline tool:

    该指令用于指定openssl使用的引擎。你可以通过下面的命令行获知系统目前支持的openssl引擎

    openssl engine -t

    例如:

    1. $ openssl engine -t
    2. (cryptodev) BSD cryptodev engine
    3. : [ available ]
    4. (dynamic) Dynamic engine loading support
    5. : [ unavailable ]

    timer_resolution

    语法:*timer_resolution t*

    缺省值:*none*

    Example:

    1. timer_resolution 100ms;

    The directive allows to decrease number gettimeofday() syscalls. By default gettimeofday() is called after each return from kevent(), epoll, /dev/poll, select(), poll().

    But if you need an exact time in logs when logging $upstream_response_time, or $msec variables, then you should use timer_resolution.

    user

    语法:*user user [group]*

    缺省值:*nobody nobody*

    指定Nginx Worker进程运行用户,默认是nobody帐号。

    例如:

    1. user www users;

    worker_cpu_affinity

    语法:*worker_cpu_affinity cpumask [cpumask…]*

    缺省值:*none*

    Linux only.

    With this option you can bind the worker process to a CPU, it calls sched_setaffinity().

    仅适用于linux,使用该选项可以绑定worker进程和CPU.

    For example,

    1. worker_proceses 4;
    2. worker_cpu_affinity 0001 0010 0100 1000;

    Bind each worker process to one CPU only.

    分别给每个worker进程绑定一个CPU.

    1. worker_proceses 2;
    2. worker_cpu_affinity 0101 1010;

    Bind the first worker to CPU0/CPU2, bind the second worker to CPU1/CPU3. This is suitable for HTT.

    将CPU0/CPU2绑定给第一个worker进程,将CPU1/CPU3绑定给第二个worker进程。

    worker_priority

    语法:*worker_priority [-] number*

    缺省值:*on*

    With this option you can give to all worker processes the priority (nice) you need/wish, it calls setpriority().

    使用该选项可以给所有的worker进程分配优先值。

    worker_processes

    语法:*worker_processes number*

    缺省值:*1*

    e.g.:

    1. worker_processes 5;

    nginx has the ability to use more than one worker process for several reasons:

    nginx可以使用多个worker进程,原因如下:

    • to use SMP
    • to decrease latency when workers blockend on disk I/O
    • to limit number of connections per process when select()/poll() is used
      The worker_processes and worker_connections from the event sections allows you to calculate maxclients value: k

    max_clients = worker_processes * worker_connections

    worker_rlimit_core

    语法:*worker_rlimit_core size*

    缺省值: '

    Maximum size of core file per worker;

    worker_rlimit_nofile

    语法: worker_rlimit_nofile limit 缺省值: '

    Specifies the value for maximum file descriptors that can be opened by this process.

    指定

    worker_rlimit_sigpending

    语法:*worker_rlimit_sigpending limit*缺省值: '

    (Since Linux 2.6.8) Specifies the limit on the number of signals that may be queued for the real user ID of the calling process.

    working_directory

    语法: working_directory path 缺省值: —prefix

    This is the working directory for the workers. It's used for core files only. nginx uses absolute paths only, all relative paths in configuration files are relative to —prefix==PATH

    原文: https://wizardforcel.gitbooks.io/nginx-doc/content/Text/2.1_mainmodule.html