核心模块(Core Modules): 主模块(Main Module): 配置和服务器全局有关的一些参数,比如错误日志、进程、权限等 user worker_processes error_log syntax: error_log file [debug|info|notice|warn|error|crit] default: ${prefix}/logs/error.log 指定保存服务器(和 fastcgi)错误的日志文件。 在不同的部分,错误等级的缺省值会不一样,为: 1、在主要部分 – error 2、在 HTTP 部分 – crit 3、在 server 部分 – crit 在 Nginx 中独有的而 lighttpd 却拒绝实现的特性是,每个虚拟主机可以有各自 分离的错误日志。在 server {} 中添加本指令即可。 log_not_found lock_file pid include syntax: include file / * default: none 你可以包含任何配置文件,基于你想要达到的目的。 该指令还支持文件名通配符: include vhosts/*.conf 注意, 0.6.7 以前,相对路径是相对于 configure 编 译时的 –prefix=<PATH> 指令指定的目录,缺省为 /usr/local/nginx 。 如果编译时没有指定,则使用绝对路径。 0.6.7 以后,相对路径是相对于 nginx 配置文件 nginx.conf 所在的目录, 而不是 nginx 的 prefix 目录了。 事件模块(Events Module): 配置 IO 事件接口的相关参数,通常就是 worker_connections 这个参数。 use syntax: use [kqueue|rtsig|epoll|/dev/poll|select|poll|eventport] default: 通常 nginx 在编译时,会根据平台自动选择最优的 Events 接口。 除非特殊情况下,编译时指定了多个事件接口,则可以使用该指令来指定 特定的接口。 worker_connections syntax: worker_connections number default: 根据主模块中的 worker_processes 指令和该指令可计算最大的客户端连接数: max_clients = worker_processes * worker_connections 不过,在做反向代理时, max_clients 变成了: max_clients = worker_processes * worker_connections/4 因为,浏览器通常默认打开两个与服务器的连接, 而 nginx 使用同一个文件描述符池中的描述符来连接后端。 HTTP 模块 HTTP 核心模块(Http Core Module): 控制 Nginx HTTP 处理过程的核心特性。 alias default_type syntax: default_type MIME-type default: default_type text/plain context: http, server,location 指定在标准 MIME 映射中没有指定的文件的默认 MIME 类型。 error_page syntax: error_page code [code…][=|=answer-code] uri default: no context: http, server, location, if in location 指定当错误出现时需要显示的 URI 。 而且,还可以改变应答的代码为另外一种代码,比如: error_page 404 =200 /.empty.gif; index keepalive_timeout syntax: keepalive_timeout [time] default: keepalive_timeout 75 context: http, server, location 指定 keep_alive 连接的客户端的超时时间。 keepalive_requests limit_except limit_rate listen syntax: listen address:port [default [backlog=num|rcvbuf=size|sndbuf=size|accept_filter=filter|deferred|bind|ssl] default: listen 80 context: server 指定最近的 server {…} 块的监听地址和端口。仅指定一个地址、一个端口、或一个地址的服务器名,都是可以的。 如果仅给定 IP 地址,则端口默认为 80 如果指令带有 default 参数,则最近的 server {…} 配置块,将成为 IP 地址:端口 对的默认服务器。 如果没有指令带有 default 参数,则缺省取 address:port 对出现的第一个 server 配置快。 location syntax: location [=|~|~*|^~] /uri/ { … } default: no context: server 在特定 URI 上设置不同的配置。既能使用普通的字符串也和正则表达式来配置。 使用正则表达式,必须带一个前缀: 1、 ~* 表示大小写不敏感的。 2、 ~ 表示大小写敏感的。 确定哪一个 location 指令匹配某查询,首先检查普通字符串。普通字符串匹配该查询的开始 部分,而且是大小写敏感的 – 取匹配得最接近的一个。之后,将以在配置文件中出现的次序 来检查各个正则表达式。找到第一个匹配查询的正则表达式时停止。如果没有找到匹配的正则 表达式,则使用普通字符串搜索到的结果。 有两种方式修改这样的行为。一是使用 “=” 前缀,仅精确匹配查询。如果查询匹配,则搜索 停止,并立即处理请求。比如,如果对 “/” 的请求比较频繁,则使用 “location = / ” 将 加快处理这种请求的过程。 第二种是使用前缀 ^~ 。该前缀与普通字符串一起使用,来告诉 nginx ,如果提供的路径匹配 则不要去检查正则表达式。举个例子,”location ^~ /images/” 表示以 /images/ 开始的查询 则可停止搜索 – 所有的正则表达式指令都不会被检查。 总结一下,指令以下面的顺序来检查: 1、使用 = 前缀的指令,它精确匹配查询。如果找到,则停止查找。 2、所有剩余的常规字符串的指令。如果该匹配使用了 ^~ 前缀,则搜索停止。 3、正则表达式,以在配置文件中定义的次序。 4、如果第 3 点获得了一个匹配,则使用该结果。否则,使用从 第 2 点中匹配到的结果。 nginx 比对解码后的 URIs, 知道这点很重要。如果你希望匹配 “/images/%20/test”,则你需要 使用 “/images/ /test” 来确定 location 。 root sendfile syntax: sendfile [on|off] default: sendfile off context: http, server, location 启用或不启用 sendfile() server syntax: server {…} default: no context: http 虚拟主机的配置指令。 不区分 IP 和基于名称( Host 请求头) 的虚拟主机。 listen 指令用来描述所有监听的地址和端口。 server_name 指令来描述所有虚拟主机的名称。 server_name syntax: server_name name […] default: server_name hostname context: server 该指令执行两种操作: 。 将 HTTP 请求中的 Host 请求头与配置文件中 server {…} 配置块比对,选择第一个匹配的。 这就是虚拟服务器的定义。用下面的顺序处理服务器名: 1、完整的,静态的名称; 2、以通配符开头的名称 – *.example.com 3、以通配符结尾的名称 – www.example.* 4、使用正则表达式的名称 如果没有匹配的,则使用以下顺序使用配置文件中的某个 [#server server { … }] 块: 1、server 块拥有标记为 default 的匹配 listen 指令。 2、拥有匹配的 listen 指令的第一个 server 块。 。如果 server_name_in_redirect 指令设置了,则设置用于 HTTP 转向中的服务器名。 server_tokens types HTTP 基本认证模块(Http Auth Basic Module): 使用该模块,可以基于 HTTP 基本认证,使用用户名和密码来保护站点或其中的某部分。 auth_basic syntax: auth_basic [text|off] default: auth_basic off context: http, server, location, limit_except 该指令包含 HTTP 基本认证使用的测试名和密码。分配的参数用于认证 realm 。 “off” 值将覆盖掉从底层指令继承来的动作。 auth_basic_user_file syntax: auth_basic_user_file the_file default: no context: http, server, location, limit_except 该指令设置用于认证 realm 的 htpasswd 文件名。需要注意的是,从 0.6.7 开始, 相对路径的文件路径将相对于配置文件 nginx.conf 所在的目录,而不是 prefix 目录。 密码必须使用 crypt 函数编码,你可以使用 apache 中的 htpasswd 程序构建。 HTTP 自动索引 该模块提供自动给出目录文件列表页面的功能。仅当 ngx_http_index_module 没有找到索引 文件时,请求才会到达该 ngx_http_autoindex_module 模块。 autoindex syntax: autoindex [ on|off ] default: autoindex off context: http, server, location 启用或禁止自动目录文件列表功能。 autoindex_exact_size syntax: autoindex_exact_size [ on|off ] default: autoindex_exact_size on context: http, server, location 定义在目录列表中如何显示文件的大小 — 精确的字节数或有取舍的更可读的 autoindex_localtime autoindex_localtime syntax: autoindex_localtime [ on|off ] default: autoindex_localtime off context: http, server, location 是否显示文件时间为本地时间,缺省不显示(为 GMT 时间)。 索引文件(Index): 设置 URL 中未指定文件时的默认文件。可指定多个文件。 前面的文件没找到时,将依次查找后面的。 index syntax: index file-path [file-path [ … ] ]; default: no context: server, location 日志(Log): 设置 Nginx 如何为大量事件写入日志。 access_log syntax: access_log path [format [buffer=size | off]] default: access_log log/access.log combined context: http, server, location nginx 日志不支持管道文件,是为一个遗憾。 (责任编辑:IT) |