Nginx主要模块常用指令说明

核心模块(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 日志不支持管道文件,是为一个遗憾。

时间: 2024-08-25 21:55:53

Nginx主要模块常用指令说明的相关文章

HTTP扫盲及nginx基础性模块常用指令整理

第一部分:HTTP基础知识 在介绍nginx常用模块中的指令时,先来回顾一下http的相关知识: 1.http的工作原理 http的工作原理大致是这样的: a).客户端与服务器先建立一个TCP连接: b).客户端通过已建立的TCP连接向服务端发送一个http请求报文: c).服务器收到请求报文后开始解析报文.定位所请求的资源,读取资源并封装成响应报文后发送给客户端: d).如果没有启用持久连接,服务器端主动断开tcp连接,客户端被动关闭:如果启用了持久连接,那该tcp连接保持一段时间后,在该时间

Nginx系列--04HTTP常用指令及常用模块

前言 本篇总结Nginx中HTTP常用指令与一些常用的模块 一. HTTP协议常用指令 1. keepalive_timeout 语法 : keepalive_timeout timeout [header_timeout];解释 : 当第一个参数timeout的值不为零时,开启长连接.什么是长连接?我们知道应用层的HTTP协议使用的四层协议是tcp连接,而tcp连接非常重量级,如果用户请求一次资源就经历一次tcp的三次握手和四次挥手,伤不起呀!所以最好是能够重用TCP连接,用户请求一次资源后T

Nginx rtmp模块nginx-rtmp-module指令详解

指令Corertmp语法:rtmp { ... }上下文:根描述:保存所有 RTMP 配置的块.server语法:server { ... }上下文:rtmp描述:声明一个 RTMP 实例.rtmp {  server {  }}listen语法:listen (addr[:port]|port|unix:path) [bind] [ipv6only=on|off] [so_keepalive=on|off|keepidle:keepintvl:keepcnt]上下文:server描述:给 NG

Nginx 模块常用指令

1.HTTP核心模块 A. client_body_buffer_size:指定连接请求实体的缓冲区大小,如果超了,那么这些请求实体的整体或部分将尝试写入一个临时文件,默认值是8k/16K: B. client_body_temp_path:指定连接请求实体试图写入的临时文件路径,默认值是client_body_temp; C. client_max_body_size:指定允许客户端连接的最大请求实体大小,如果超了,返回客户端“Request Entity Too Large” 413错误,默

&ldquo;os&rdquo;模块 常用指令

先首说一个通过os来调用的模块:os.path.os.path只是一个别名而已,对于不同的平台,这个模块可能有不同的名字.如,posix式的系统(如unix,linux)的话,它的别名就叫做os.path.对于Mac.windows等来说,可能名字叫做macpach, ntpath. 模块os.path下常见的函数: abspath(path):    Return an absolute path,返回绝对路经basename(p):     Returns the final compone

Nginx笔记02-nginx常用参数配置说明

nginx的主配置文件是nginx.conf,这里主要针对这个文件进行说明 1.主配置文件nginx.conf 2.nginx配置文件的结构 从上面的配置文件中我们可以总结出nginx配置文件的基本结构 2.1 全局块 全局块是默认配置文件从开始到events之间的内容,主要设置一些影响nginx服务器运行的配置命令,作用域是nginx服务器全局,通常包括nginx的用户和组,允许生成的work process数,nginx进程pid文件,日志的路径和类型.配置文件引入等 2.2 events块

最全面 Nginx 入门教程 + 常用配置解析

转自 http://blog.csdn.net/shootyou/article/details/6093562 Nginx介绍和安装 一个简单的配置文件 模块介绍 常用场景配置 进阶内容 参考资料 == Nginx介绍和安装 == Nginx是一个自由.开源.高性能及轻量级的HTTP服务器及反转代理服务器, 其性能与IMAP/POP3代理服务器相当.Nginx以其高性能.稳定.功能丰富.配置简单及占用系统资源少而著称. Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx

nginx -- handler模块(100%)

handler模块简介 相信大家在看了前一章的模块概述以后,都对nginx的模块有了一个基本的认识.基本上作为第三方开发者最可能开发的就是三种类型的模块,即handler,filter和load-balancer.Handler模块就是接受来自客户端的请求并产生输出的模块.有些地方说upstream模块实际上也是一种handler模块,只不过它产生的内容来自于从后端服务器获取的,而非在本机产生的. 在上一章提到,配置文件中使用location指令可以配置content handler模块,当Ng

Nginx核心配置文件常用参数详解

Nginx核心配置文件常用参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于Nginx权威文档的话童鞋们可以参考Nginx官方文档介绍:http://nginx.org/en/docs/http/ngx_http_core_module.html.本篇博客只列出来了常用的参数介绍,用这些参数说明来定制化我们自己的nginx的web服务器等等. 一.正常运行的必备配置 1>.user username [groupname]; #以那个用户身份运行,以在configu