1、前言
1.1、Nginx配置文件各个主配置块说明
名称 | 作用 |
---|
全局块 | 配置影响Nginx全局的指令 | events块 | 配置影响Nginx服务器或与用户的网络连接 | http块 | 可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置 | mail块 | 配置请求的路由,以及各种页面的处理情况 | stream块 | 配置四层协议的转发、代理或者负载均衡等 |
表1-1 Nginx配置块介绍
1.2、Nginx配置符号参考
表1-2 容量符号表
示例:“13k”、“9m”
符号 | 说明 |
---|
ms | 毫秒 | s | 秒 | m | 分钟 | h | 小时 | d | 日 | w | 周 | M | 一个月,30天 | y | 年,365天 |
表1-3 时间符号表
示例:“1h20m"代表"1小时30分”,“2y7M"代表"2年零7个月”
1.3、本文出现的一些词汇介绍
符号 | 说明 |
---|
上下文 | 用来表示该指令可以出现的区域 | time | 代表时间,时间符号详见表2-2,如果不加时间符号则代表秒 | file | 表示文件路径 | prefix | prefix是配置时设置的,${prefix} 默认为 /usr/local/nginx | number | 整型数 | size | 代表文件大小,容量符号详见表2-1,默认不加容量符号则代表字节 | path | 表示目录名 | string | 普通字符串 | rate | 单位是字节/秒,写法和size的格式是一样的 |
表1-4 符号解释
2、正文
2.1、位于全局块的配置指令
daemon
- 语法: daemon on|off;
- 默认: daemon on;
- 上下文: 全局块
- 说明: 是否以守护进程方式启动Nginx。
master_process
- 语法: master_process on|off;
- 默认: master_process on;
- 上下文: 全局块
- 说明: 是否启动worker进程。
timer_resolution
pid
- 语法: pid file;
- 参数说明:
file – 可以是相对路径或绝对路径,相对路径最终形式为 ${prefix}/file,绝对路径最终形式为 file - 默认: pid ${prefix}/logs/nginx.pid;
- 上下文: 全局块
- 说明: 设置保存主进程PID的文件路径。
pid logs/nginx.pid;
lock_file
worker_processes
- 语法: worker_processes number|auto;
- 参数说明:
auto – 表示worker进程数等于当前的CPU个数 - 默认: worker_processes 1;
- 上下文: 全局块
- 说明: 设置worker进程的个数。
debug_points
- 语法: debug_points stop|abort;
- 参数说明:
stop – 当进程出现异常时停止当前进程abort – 当进程出现异常时产生一个coredump文件 - 默认: —
- 上下文: 全局块
- 说明: 该配置指令用于调试。
user
worker_priority
worker_cpu_affinity
worker_rlimit_nofile
worker_rlimit_core
worker_shutdown_timeout
- 语法: worker_shutdown_timeout time;
- 默认: —
- 上下文: 全局块
- 说明: 配置工作进程正常关闭的超时时间。当时间到期时,Nginx将尝试关闭所有当前打开的连接。
working_directory
env
ssl_engine
google_perftools_profiles
pcre_jit
- 语法: pcre_jit on|off;
- 默认: pcre_jit off;
- 上下文: 全局块
- 说明: 使用pcre_jit优化正则表达式。要使用此指令需在构建Nginx时加上配置选项: –with-pcre-jit。
thread_pool
- 语法: thread_pool name threads=number [max_queue=number];
- 参数说明:
name – 线程池名称threads – 线程池中的最大线程数max_queue – 允许在队列中等待的任务数 - 默认: thread_pool default threads=32 max_queue=65536;
- 上下文: 全局块
- 说明: 定义线程池的名称和参数,用于多线程读取和发送文件,而不阻塞工作进程。如果池中的所有线程都忙,则新任务将在队列中等待。默认情况下,队列中最多可以等待65536个任务,当队列溢出时,任务完成并出错。
events
- 语法: events {…}
- 上下文: 全局块
- 说明: 设置一个事件模块。
events {
...
}
http
- 语法: http {…}
- 上下文: 全局块
- 说明: 设置一个HTTP模块。
http {
...
}
mail
- 语法: mail {…}
- 上下文: 全局块
- 说明: 设置一个MAIL模块。要使用此指令需在构建Nginx时加上配置选项: –with-mail。
mail {
...
}
stream
- 语法: stream {…}
- 上下文: 全局块
- 说明: 设置一个STREAM模块。要使用此指令需在构建Nginx时加上配置选项: –with-stream。
stream {
...
}
2.2、位于events块的配置指令
worker_connections
use
- 语法: use event_module;
- 参数说明:
event_module – 表示事件模型,可选项:select、poll、epoll、kqueue、/dev/poll、eventport - 默认: —
- 上下文: events块
- 说明: 选择使用的事件模型。一般不用自己设置,因为Nginx会默认使用当前平台下最高效合适的事件模型。
multi_accept
accept_mutex
accept_mutex_delay
debug_connection
worker_aio_requests
2.3、位于http块的配置指令
2.3.1、ngx_http_access_module模块
allow
- 语法: allow address|CIDR|unix:|all;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块、http块中的limit_except块
- 说明: 表示描述的网络地址有权直接访问。如果指定unix:,则允许所有UNIX域套接字的访问。注意:allow和deny的规则是按顺序执行的。
deny
2.3.2、ngx_http_addition_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-http_addition_module
add_before_body
- 语法: add_before_body uri;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 在回复正文的最前面加入一段文字,Nginx会发起一个子请求去获取这些文字。空字符串作为参数时会取消从先前配置级别继承的添加。
add_after_body
- 语法: add_after_body uri;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 在回复正文的最后面加入一段文字,Nginx会发起一个子请求去获取这些文字。空字符串作为参数时会取消从先前配置级别继承的添加。
addition_types
2.3.3、ngx_http_auth_basic_module模块
auth_basic
- 语法: auth_basic string|off;
- 默认: auth_basic off;
- 上下文: http块、http块中的server块、http块中的location块、http块中的limit_except块
- 说明: 启用使用“HTTP基本身份验证”协议验证用户名和密码。指定的参数用作 realm,并且参数值可以包含变量。特殊值off表示取消从上一个配置级别继承的auth_basic指令的影响。
auth_basic_user_file
2.3.4、ngx_http_auth_request_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-http_auth_request_module
auth_request
auth_request_set
- 语法: auth_request_set $variable value;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 在授权请求完成后,将请求变量设置为给定值。该值可能包含来自授权请求的变量,例如 $upstream_http.*。
2.3.5、ngx_http_autoindex_module模块
autoindex
- 语法: autoindex on|off;
- 默认: autoindex off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 开启或关闭目录列表输出功能。
autoindex_format
- 语法: autoindex_format html|json|jsonp|xml;
- 默认: autoindex_format html;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置回显文件格式。
autoindex_localtime
- 语法: autoindex_localtime on|off;
- 参数说明:
on – 表示显示的是服务器时间off – 表示显示的是GMT时间 - 默认: autoindex_localtime off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置目录中列出的文件时间是服务器时间还是GMT时间。
autoindex_exact_size
2.3.6、ngx_http_browser_module模块
modern_browser
- 语法: modern_browser browser version;
????modern_browser unlisted; - 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定一个版本,此版本及后续版本的浏览器都被认定为新式浏览器。浏览器可以是下列之一:msie、gecko(基于Mozilla)、opera、safari或者konqueror。版本可被指定为以下形式:X、X.X、X.X.X 或 X.X.X.X。每一形式的最大值分别是4000、4000.99、4000.99.99和4000.99.99.99。当浏览器既没有在modern_browser中列出,又没有在ancient_browser中列出时,如果配置了特殊值unlisted,那么浏览器将被认定为新式浏览器,否则认定为旧式浏览器。如果请求头中没有"User-Agent"域,浏览器以没有列出对待。
ancient_browser
- 语法: ancient_browser string [string …];
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 如果任一指定的子串在请求头的"User-Agent"域中被发现,浏览器将被认定为旧式浏览器。特殊字符串"netscape4"相当于正则表达式"^Mozilla/[1-4]"。
modern_browser_value
- 语法: modern_browser_value string;
- 默认: modern_browser_value 1;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设定变量 $modern_browser 的值。
ancient_browser_value
2.3.7、ngx_http_charset_filter_module模块
charset
- 语法: charset charset|off;
- 默认: charset off;
- 上下文: http块、http块中的server块、http块中的location块、http块中的location块中的if块
- 说明: 为响应头的"Content-Type"添加指定的字符集。如果这个字符集和source_charset指令设置的字符集不同,就会进行转换。参数off表明不在响应头的"Content-Type"中添加字符集。字符集可以当作变量来定义:charset $charset; 这种情况下,一个变量所有可能的值,至少使用charset_map charset或者source_charset指令中的一种来配置。对于utf-8、windows-1251和koi8-r字符集,在配置中包含conf/koi-win、conf/koi-utf和conf/win-utf这些文件就足够了。对于其它字符集,简单地做一个虚构转换表就可以了, 比如:charset_map iso-8859-5 _ { } 。此外,字符集也可以在响应头的"X-Accel-Charset"中设置。
source_charset
override_charset
- 语法: override_charset on|off;
- 默认: override_charset off;
- 上下文: http块、http块中的server块、http块中的location块、http块中的location块中的if块
- 说明: 对于接收到的代理服务器或者FastCGI服务器的响应头中"Content-Type"已经带有字符集的情况,确定是否进行字符集转换。如果开启转换,接收到的响应中指定的字符集会被当作原始字符集。需要注意的是,如果在子请求中接收到的应答,始终会将应答的字符集转换为主请求的字符集,无论override_charset指令是否开启。
charset_types
- 语法: charset_types mime-type [mime-type …];
- 默认: charset_types text/html text/xml text/plain text/vnd.wap.wml application/x-javascript application/rss+xml;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 使模块在响应时能处理除了"text/html"之外其他指定的MIME类型。特殊值"*"表示匹配任意的MIME类型。
charset_map
2.3.8、ngx_http_copy_filter_module模块
output_buffers
2.3.9、ngx_http_core_module模块
variables_hash_max_size
- 语法: variables_hash_max_size size;
- 默认: variables_hash_max_size 1024;
- 上下文: http块
- 说明: 设置变量哈希表的最大容量。
variables_hash_bucket_size
- 语法: variables_hash_bucket_size size;
- 默认: variables_hash_bucket_size 64;
- 上下文: http块
- 说明: 设置变量哈希桶的容量。
server_names_hash_max_size
- 语法: server_names_hash_max_size size;
- 默认: server_names_hash_max_size 512;
- 上下文: http块
- 说明: 设置主机名哈希表的最大容量。
server_names_hash_bucket_size
- 语法: server_names_hash_bucket_size size;
- 默认: server_names_hash_bucket_size 32|64|128;
- 上下文: http块
- 说明: 设置主机名哈希桶的容量,其默认值取决于处理器的缓存行的大小。
server
- 语法: server {…}
- 上下文: http块
- 说明: 设置一个属于http块的server块。
http {
server {
...
}
}
connection_pool_size
- 语法: connection_pool_size size;
- 默认: connection_pool_size 256|512;
- 上下文: http块、http块中的server块
- 说明: 允许精确调整每个连接的内存分配。该指令对性能的影响很小,一般不应使用。默认情况下,在32位平台上等于256字节,在64位平台上等于512字节。
request_pool_size
- 语法: request_pool_size size;
- 默认: request_pool_size 4k;
- 上下文: http块、http块中的server块
- 说明: 允许准确调整每个请求的内存分配。该指令对性能的影响很小,一般不应使用。
client_header_timeout
- 语法: client_header_timeout time;
- 默认: client_header_timeout 60s;
- 上下文: http块、http块中的server块
- 说明: 定义读取客户端请求头部的超时时间。如果客户端在这段时间内没有传送完整个头部,Nginx将返回错误408(Request Time-out)到客户端。
client_header_buffer_size
- 语法: client_header_buffer_size size;
- 默认: client_header_buffer_size 1k;
- 上下文: http块、http块中的server块
- 说明: 设置读取客户端请求头部的缓冲区大小。对于大多数请求,1K的缓冲区就足够了。但是,如果请求包含长cookie或来自WAP客户端,1K可能不太够。如果请求行或请求头字段不适合此缓冲区,则分配由large_client_header_buffers指令配置的更大缓冲区。
large_client_header_buffers
- 语法: large_client_header_buffers number size;
- 默认: large_client_header_buffers 4 8k;
- 上下文: http块、http块中的server块
- 说明: 设置读取客户端超大请求的缓冲区的数量和每块缓冲的容量。HTTP请求行的长度不能超过一块缓冲的容量,否则Nginx返回错误414(Request-URI Too Large)到客户端。每个请求头的长度也不能超过一块缓冲的容量,否则Nginx返回错误400(Bad Request)到客户端。缓冲区仅在需要时才分配,默认每块的容量是8K字节。如果在请求处理结束后连接转换为保持活动状态,则这些缓冲区将被释放。
ignore_invalid_headers
- 语法: ignore_invalid_headers on|off;
- 默认: ignore_invalid_headers on;
- 上下文: http块、http块中的server块
- 说明: 控制是否忽略非法的请求头字段名。合法的名字是由英文字母、数字和连字符组成,当然也可以包含下划线。本指令可以在默认虚拟主机的server配置层级中定义一次,那么这个值在监听在相同地址和端口的所有虚拟主机上都生效。
merge_slashes
underscores_in_headers
- 语法: underscores_in_headers on|off;
- 默认: underscores_in_headers off;
- 上下文: http块、http块中的server块
- 说明: 启用或禁用在客户端请求头中使用下划线。如果禁止,含有下划线的请求头将被标志为非法请求头并接受ignore_invalid_headers指令的处理。可以在默认主机的server配置级别定义此命令。这样,指令设置将覆盖监听同一地址和端口的所有虚拟主机。
location
listen
server_name
types_hash_max_size
- 语法: types_hash_max_size size;
- 默认: types_hash_max_size 1024;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置类型哈希表的最大容量。
types_hash_bucket_size
- 语法: types_hash_bucket_size size;
- 默认: types_hash_bucket_size 64;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置类型哈希桶的容量。
types
default_type
- 语法: default_type mime-type;
- 默认: default_type text/plain;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义响应的默认MIME类型。
root
alias
limit_except
client_max_body_size
- 语法: client_max_body_size size;
- 参数说明:
size – 设置为0时可以使Nginx不检查客户端请求正文的长度 - 默认: client_max_body_size 1m;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置允许客户端请求正文的最大长度,请求的长度由"Content-Length"请求头指定。如果请求的长度超过设定值,Nginx将返回错误413(Request Entity Too Large)到客户端。
client_body_buffer_size
- 语法: client_body_buffer_size size;
- 默认: client_body_buffer_size 8k|16k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置读取客户端请求正文的缓冲容量,如果请求正文大于缓冲容量,整个正文或者正文的一部分将写入临时文件。
client_body_timeout
- 语法: client_body_timeout time;
- 默认: client_body_timeout 60s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义读取客户端请求正文的超时。超时是指相邻两次读操作之间的最大时间间隔,而不是整个请求正文完成传输的最大时间。如果客户端在这段时间内没有传输任何数据,Nginx将返回408(Request Time-out)错误到客户端。
client_body_temp_path
client_body_in_file_only
- 语法: client_body_in_file_only on|clean|off;
- 参数说明:
on – 表示请求处理结束后不会删除临时文件clean – 表示请求处理结束后会删除临时文件 - 默认: client_body_in_file_only off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 决定Nginx是否将客户端请求正文整个写入文件。这条指令在调试、使用 $request_body_file 变量或者使用ngx_http_perl_module模块的 $r->request_body_file 方法时都可以使用。
client_body_in_single_buffer
- 语法: client_body_in_single_buffer on|off;
- 默认: client_body_in_single_buffer off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 决定是否将Nginx将整个客户端请求正文保存在一块缓冲中。
sendfile
- 语法: sendfile on|off;
- 默认: sendfile off;
- 上下文: http块、http块中的server块、http块中的location块、http块中的location块中的if块
- 说明: 启用或禁用 sendfile() 。
sendfile_max_chunk
- 语法: sendfile_max_chunk size;
- 默认: sendfile_max_chunk 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置为非0值时,可以限制在一次 sendfile() 调用时传输的数据量。如果不进行限制,一个快速的连接可能会霸占整个worker进程的所有资源。
subrequest_output_buffer_size
- 语法: subrequest_output_buffer_size size;
- 默认: subrequest_output_buffer_size 4k|8k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置用于存储子请求响应主体的缓冲区的大小。默认情况下,缓冲区大小等于一页内存,即4K或8K,具体取决于平台。
aio
- 语法: aio on|off|sendfile;
- 默认: aio off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或者禁用异步文件I/O(AIO)。
aio_write
- 语法: aio_write on|off;
- 默认: aio_write off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 如果启用了aio,则指定是否将其用于写入文件。
read_ahead
- 语法: read_ahead size;
- 默认: read_ahead 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置内核参数,控制文件预读的数量。在Linux上无效。
directio
- 语法: directio size|off;
- 默认: directio off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当读入长度大于等于指定size的文件时,开启DirectIO功能。它在处理大文件或者在Linux系统使用aio时比较有用。
directio_alignment
- 语法: directio_alignment size;
- 默认: directio_alignment 512;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为directio设置文件偏移量对齐。
tcp_nopush
- 语法: tcp_nopush on|off;
- 默认: tcp_nopush off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用在Linux上使用TCP_CORK套接字选项,选项仅在使用sendfile的时候才开启。开启此选项允许在Linux上将响应头和正文的开始部分一起发送或一次性发送整个文件。
tcp_nodelay
- 语法: tcp_nodelay on|off;
- 默认: tcp_nodelay on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用TCP_NODELAY选项。当连接转变为长连接或upstream发送响应到客户端时启用该选项。此外,它还在SSL连接、无缓冲代理和WebSocket代理上启用。
send_timeout
- 语法: send_timeout time;
- 默认: send_timeout 60s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置向客户端传输响应的超时时间。超时仅指两次相邻写操作之间的时间间隔,而非整个响应的传输时间。如果客户端在这段时间中没有收到任何数据,连接将关闭。
send_lowat
- 语法: send_lowat size;
- 默认: send_lowat 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 如果设置成非0值,Nginx将尝试最小化向客户端发送数据的次数。在Linux中改配置无效。
postpone_output
- 语法: postpone_output size;
- 参数说明:
- 默认: postpone_output 1460;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 如果可能,到客户端的数据将被推迟发送,直到Nginx需要发送的数据至少有size字节。
limit_rate
- 语法: limit_rate rate;
- 参数说明:
- 默认: limit_rate 0;
- 上下文: http块、http块中的server块、http块中的location块、http块中的location块中的if块
- 说明: 限制向客户端传送响应的速率限制。Nginx按连接限速,所以如果某个客户端同时开启了两个连接,那么客户端的整体速率是这条指令设置值的2倍。
limit_rate_after
- 语法: limit_rate_after size;
- 默认: limit_rate_after 0;
- 上下文: http块、http块中的server块、http块中的location块、http块中的location块中的if块
- 说明: 当传输量大于size时,超出部分将限速传送。
keepalive_timeout
- 语法: keepalive_timeout timeout [header_timeout];
- 默认: keepalive_timeout 75s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 第一个参数设置客户端的长连接在服务器端保持的最长时间(在此时间客户端未发起新请求,则长连接关闭),第二个参数为可选项,设置"Keep-Alive: timeout=time"响应头的值。
keepalive_requests
- 语法: keepalive_requests number;
- 默认: keepalive_requests 100;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置通过一个长连接可以处理的最大请求数,请求数超过此值,长连接将关闭。
keepalive_disable
- 语法: keepalive_disable none|browser [browser …];
- 默认: keepalive_disable msie6;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 针对行为异常的浏览器关闭长连接功能,browser参数指定那些浏览器会受到影响。值为msie6表示在遇到POST请求时,关闭与老版MSIE浏览器建立长连接。值为safari表示在遇到MacOS X和类MacOS X操作系统下的Safari浏览器和类Safari浏览器时,不与浏览器建立长连接。值为none表示为所有浏览器开启长连接功能。
satisfy
- 语法: satisfy all|any;
- 默认: satisfy all;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: Nginx进行访问限制的有ngx_http_access_module模块、ngx_http_auth_basic_module模块、ngx_http_auth_request_module模块和ngx_http_auth_jwt_module模块。本指令设置成all时,表示只有当所有模块的所有限制条件(写入配置的)都授权访问时,允许请求访问;设置成any时,表示如果当任意模块的任意限制条件授权访问时,允许请求访问。
auth_delay
- 语法: auth_delay time;
- 默认: auth_delay 0s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当访问受密码、子请求结果或JWT限制时,使用401响应代码延迟处理未经授权的请求,以防止计时攻击。
internal
lingering_close
- 语法: lingering_close off|on|always;
- 参数说明:
off – 表示Nginx立即关闭连接,绝不等待客户端传送额外数据,这样做违反了协议,不应在正常情况下使用on – 表示Nginx在完成关闭连接前等待和处理客户端发来的额外数据,但只有在预测客户端可能发送更多数据的情况才会做此处理always – 表示Nginx无条件等待和处理客户端的额外数据 - 默认: lingering_close on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 控制Nginx如何关闭客户端连接。
lingering_time
- 语法: lingering_time time;
- 默认: lingering_time 30s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: lingering_close生效时,这条指令定义Nginx处理(读取但忽略)客户端额外数据的最长时间。超过这段时间后,Nginx将关闭连接,不论是否还有更多数据待处理。
lingering_timeout
- 语法: lingering_timeout time;
- 默认: lingering_timeout 5s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: lingering_close生效时,这条指令定义Nginx等待客户端更多数据到来的最长时间。如果在这段时间内,Nginx没有接收到数据,Nginx将关闭连接。否则,Nginx将接收数据,忽略它,然后再等待更多数据。这个“等待——接收——忽略”的循环一直重复,但总时间不会超过lingering_time指令定义的时间。
reset_timedout_connection
- 语法: reset_timedout_connection on|off;
- 默认: reset_timedout_connection off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 开启或关闭重置超时连接的功能。重置连接是这样执行的:关闭套接字以前,设置SO_LINGER选项的超时值为0,那么当关闭套接字时,Nginx向客户端发送TCP RST,并且释放此套接字占用的所有内存。这样可以避免某个已关闭的套接字长时间处于FIN_WAIT1状态,并占用内存缓冲区。应该注意的事,超时的长连接仍然是正常关闭。
absolute_redirect
- 语法: absolute_redirect on|off;
- 默认: absolute_redirect on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 如果禁用,Nginx发出的重定向将是相对的。
server_name_in_redirect
- 语法: server_name_in_redirect on|off;
- 默认: server_name_in_redirect off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用Nginx将server_name指令指定的首要虚拟主机名用于发起的重定向的功能。关闭此功能时,Nginx将使用"Host"请求头的中的名字,如果没有此请求头,将使用虚拟主机所在的IP地址。重定向中端口的使用由port_in_redirect指令控制。
port_in_redirect
- 语法: port_in_redirect on|off;
- 默认: port_in_redirect on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用在Nginx发出的绝对重定向中指定端口。重定向中首要主机名的使用由server_name_in_redirect指令控制。
msie_padding
- 语法: msie_padding on|off;
- 默认: msie_padding on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用向状态码大于400的MSIE客户端的响应添加注释,以将响应大小增加到512字节。
msie_refresh
- 语法: msie_refresh on|off;
- 默认: msie_refresh on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为MSIE客户端开启或者关闭用页面刷新取代页面重定向的功能。
log_not_found
- 语法: log_not_found on|off;
- 默认: log_not_found on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用在error_log中记录文件不存在的错误。
log_subrequest
- 语法: log_subrequest on|off;
- 默认: log_subrequest off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用在access_log中记录子请求的访问日志。
recursive_error_pages
- 语法: recursive_error_pages on|off;
- 默认: recursive_error_pages off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用error_page指令进行多次重定向。允许的话,重定向次数也有限制。而禁止此功能时,当访问error_page指令重定向的错误页面出现任何问题时,Nginx将直接输出默认错误页面。
server_tokens
- 语法: server_tokens on|off;
- 默认: server_tokens on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用在错误信息的"Server"响应头中添加Nginx版本号。
if_modified_since
- 语法: if_modified_since off|exact|before;
- 参数说明:
off – 表示"If-Modified-Since"请求头字段被忽略exact – 表示响应信息的修改时间与"If-Modified-Since"请求头字段中的时间必须完全一致before – 表示响应信息的修改时间小于或等于"If-Modified-Since"请求头字段中的时间 - 默认: if_modified_since exact;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定如何将响应信息的修改时间与"If-Modified-Since"请求头字段中的时间进行比较。
max_ranges
- 语法: max_ranges number;
- 参数说明: 参数
number 为0时表示完全禁用字节范围请求 - 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 限制字节范围请求中允许的最大范围数。如果没有指定字节范围,则会处理超过限制的请求。默认情况下,范围的数量不受限制。
chunked_transfer_encoding
- 语法: chunked_transfer_encoding on|off;
- 默认: chunked_transfer_encoding on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用在HTTP/1.1中使用分块传输编码。尽管标准要求必须实现,但在使用无法支持分块编码的软件时,它可能会派上用场。
etag
- 语法: etag on|off;
- 默认: etag on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用静态资源的"ETag"响应头字段的自动生成。
error_page
post_action
} ```
error_log
- 语法: error_log file [level];
- 参数说明:
file – 表示存储日志的文件,特殊值stderr表示选择标准错误文件,可以通过指定"syslog:"前缀来配置日志到syslog,可以通过指定"memory:"前缀和缓冲区大小来配置到循环内存缓冲区的日志记录level – 表示日志记录的级别,可以是以下级别之一:debug、info、notice、warn、error、crit、alert或emerg。以上的日志级别是按严重性递增的顺序列出的,设置某个日志级别将导致记录指定的和更严重的日志级别的所有消息,如果省略此参数,则默认使用error级别记录日志 - 默认: error_log logs/error.log error;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 配置日志记录,可以在同一配置级别上指定多个日志,如果在全局配置级别上未明确定义将日志写入文件,则将使用默认文件。如果要打印DEBUG级别的日志,需在构建Nginx时加上配置选项: –with-debug。
open_file_cache
- 语法: open_file_cache off|max=N [inactive=time];
- 参数说明:
off – 表示禁用缓存max – 表示设置缓存中元素的最大数量,当缓存溢出时,最近最少使用的元素被删除(LRU)inactive – 表示定义一个时间,如果元素在这段时间内未被访问,则在该时间之后从缓存中删除该元素,默认为60秒 - 默认: open_file_cache off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 配置可以存储的缓存:
- 打开文件描述符,它们的大小和修改时间;
- 有关目录存在的信息;
- 文件查找错误,例如“找不到文件”、“没有读取权限”等。
open_file_cache_valid
- 语法: open_file_cache_valid time;
- 默认: open_file_cache_valid 60s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置验证open_file_cache缓存元素的时间。
open_file_cache_min_uses
- 语法: open_file_cache_min_uses number;
- 默认: open_file_cache_min_uses 1;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 在open_file_cache指令number的inactive参数配置的时间段内设置文件访问的最小值,这是文件描述符在缓存中保持打开状态所必需的。
open_file_cache_errors
- 语法: open_file_cache_errors on|off;
- 默认: open_file_cache_errors off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 通过open_file_cache启用或禁用文件查找错误的缓存。
open_file_cache_events
- 语法: open_file_cache_events on|off;
- 默认: open_file_cache_events off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 通过open_file_cache启用或禁用事件缓存。
resolver
resolver_timeout
- 语法: resolver_timeout time;
- 默认: resolver_timeout 30s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置DNS操作的超时时间。
gzip_vary
- 语法: gzip_vary on|off;
- 默认: gzip_vary off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 如果gzip、gzip_static或gunzip是激活的,启用或禁用插入"Vary: Accept-Encoding"响应头字段。
gzip_http_version
- 语法: gzip_http_version 1.0|1.1;
- 默认: gzip_http_version 1.1;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置压缩响应所需请求的最低HTTP版本。
gzip_proxied
- 语法: gzip_proxied off|expired|no-cache|no-store|private|no_last_modified|no_etag|auth|any […];
- 参数说明:
off – 表示禁用所有代理请求的压缩,忽略其他参数expired – 表示如果响应头包含具有禁用缓存值的"Expires"字段,则启用压缩no-cache – 表示如果响应头包含"Cache-Control"字段,并且其值为"no-cache",则启用压缩no-store – 表示如果响应头包含"Cache-Control"字段,并且其值为"no-store",则启用压缩private – 表示如果响应头包含"Cache-Control"字段,并且其值为"private",则启用压缩no_last_modified – 表示如果响应头不包含"Last-Modified"字段,则启用压缩no_etag – 表示如果响应头不包含"ETag"字段,则启用压缩auth – 表示如果请求头包含"Authorization"字段,则启用压缩any – 表示为所有代理请求启用压缩 - 默认: gzip_proxied off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 根据请求和响应启用或禁用对代理请求的响应进行gzip压缩,该指令接受多个参数。
gzip_disable
- 语法: gzip_disable regex [regex …];
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 禁止对"User-Agent"标头字段匹配任何指定正则表达式的请求的响应进行gzip压缩。
disable_symlinks
2.3.10、ngx_http_dav_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-http_dav_module 该模块无法单独使用,需要与提供WebDAV操作方法的模块一起使用,可以 点击这里 获取配合WebDAV使用的第三方模块
dav_methods
- 语法: dav_methods off | method [method …];
- 默认: dav_methods off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许指定的HTTP和WebDAV接受的方法。参数off表示拒绝此模块处理的所有方法,支持的方法有:PUT,DELETE,MKCOL,COPY和MOVE。
create_full_put_path
- 语法: create_full_put_path on|off;
- 默认: create_full_put_path off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: WebDAV规范只允许在现有目录中创建文件,该指令允许创建所有需要的中间目录。
min_delete_depth
dav_access
2.3.11、ngx_http_degradation_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-http_degradation_module
degradation
- 语法: degradation sbrk=size;
- 默认: —
- 上下文: http块
- 说明: 设置Nginx内存使用限制,超过此限制将返回错误响应给客户端。
degrade
- 语法: degrade 204|444;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当内存限制达到时(degradation指令),选择返回给客户端的是204响应还是444响应。
2.3.12、ngx_http_empty_gif_module模块
empty_gif
- 语法: empty_gif;
- 默认: —
- 上下文: http块中的location块
- 说明: 浏览器在访问网页时会请求一个ico文件来作为收藏夹的小图标,如果不想实现这个功能又不想报错的话可以使用该模块,该模块向浏览器发出单像素透明GIF,以此来骗浏览器。
2.3.13、ngx_http_fastcgi_module模块
fastcgi_pass
fastcgi_index
fastcgi_split_path_info
fastcgi_store
- 语法: fastcgi_store on|off|string;
- 参数说明:
on – 表示将文件保存到alias或root对应的路径off – 表示禁止保存文件string – 表示显式地设置文件名,文件名可以使用变量来代替 - 默认: fastcgi_store off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁止将文件保存到磁盘。
fastcgi_store_access
fastcgi_buffering
- 语法: fastcgi_buffering on|off;
- 默认: fastcgi_buffering on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用来自FastCGI服务器的响应缓冲。启用缓冲后,Nginx会尽快收到来自FastCGI服务器的响应,将其保存到由fastcgi_buffer_size和fastcgi_buffers指令设置的缓冲区中。如果整个响应过大,可以将其中的一部分保存到磁盘上的临时文件中。写入临时文件由fastcgi_max_temp_file_size和fastcgi_temp_file_write_size指令控制。当缓冲被禁用时,响应会在收到时立即同步传递给客户端。Nginx不会尝试从FastCGI服务器读取整个响应。Nginx一次可以从服务器接收的最大数据大小由fastcgi_buffer_size指令设置。也可以通过在"X-Accel-Buffering"响应头字段中传递"yes"或"no"来启用或禁用缓冲。可以使用fastcgi_ignore_headers指令禁用此功能。
fastcgi_request_buffering
- 语法: fastcgi_request_buffering on|off;
- 默认: fastcgi_request_buffering on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用客户端请求正文的缓冲。启用缓冲后,在将请求发送到FastCGI服务器之前,将从客户端读取整个请求正文。当缓冲被禁用时,请求正文在收到时立即发送到FastCGI服务器。在这种情况下,如果Nginx已经开始发送请求正文,则请求无法传递到下一个服务器。
fastcgi_ignore_client_abort
- 语法: fastcgi_ignore_client_abort on|off;
- 默认: fastcgi_ignore_client_abort off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 确定当客户端在不等待响应的情况下关闭连接时,是否应关闭与FastCGI服务器的连接。
fastcgi_bind
fastcgi_socket_keepalive
- 语法: fastcgi_socket_keepalive on|off;
- 默认: fastcgi_socket_keepalive off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为发送到FastCGI服务器的连接配置"TCP keepalive"选项。默认情况下,操作系统的设置对套接字有效。如果该指令的值被设置为"on",则该套接字的SO_KEEPALIVE选项将被打开。
fastcgi_connect_timeout
- 语法: fastcgi_connect_timeout time;
- 默认: fastcgi_connect_timeout 60s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义与FastCGI服务器建立连接的超时时间。需要注意的是,这个超时时间通常不能超过75秒。
fastcgi_send_lowat
- 语法: fastcgi_send_lowat size;
- 默认: fastcgi_send_lowat 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 该指令在Linux上无效。
fastcgi_buffer_size
- 语法: fastcgi_buffer_size size;
- 默认: fastcgi_buffer_size 4k|8k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置用于读取从FastCGI服务器接收的响应的第一部分的缓冲区的大小,这部分通常包含一个小的响应头。默认情况下,缓冲区大小等于一页内存,有可能是4K或8K,具体取决于平台。
fastcgi_pass_request_headers
- 语法: fastcgi_pass_request_headers on|off;
- 默认: fastcgi_pass_request_headers on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指示是否将原始请求的报头字段传递给FastCGI服务器。
fastcgi_pass_request_body
- 语法: fastcgi_pass_request_body on|off;
- 默认: fastcgi_pass_request_body on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指示是否将原始请求正文信息传递给FastCGI服务器。
fastcgi_intercept_errors
- 语法: fastcgi_intercept_errors on|off;
- 默认: fastcgi_intercept_errors off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 确定是否应该将响应码大于或等于300的FastCGI服务器响应传递给客户端,或者拦截并重定向到Nginx以使用error_page指令进行处理。
fastcgi_read_timeout
- 语法: fastcgi_read_timeout time;
- 默认: fastcgi_read_timeout 60s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义从FastCGI服务器读取响应的超时时间。这里指的是在两次连续读取操作之间间隔,而不是针对整个响应的传输。如果FastCGI服务器在此时间内没有传输任何内容,则连接关闭。
fastcgi_buffers
- 语法: fastcgi_buffers number size;
- 默认: fastcgi_buffers 8 4k|8k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为单个连接设置用于从FastCGI服务器读取响应的缓冲区的数量和大小。默认情况下,缓冲区大小等于一页内存,有可能是4K或8K,具体取决于平台。
fastcgi_busy_buffers_size
- 语法: fastcgi_busy_buffers_size size;
- 默认: fastcgi_busy_buffers_size 8k|16k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当启用了对来自FastCGI服务器的响应的缓存时,该指令可以限制缓冲区的总大小,可以是正忙于发送到客户端的响应,而响应还没有完全读取。同时,其余的缓冲区可用于读取响应,如果需要,还可以缓冲对临时文件的部分响应。默认情况下,大小受fastcgi_buffer_size和fastcgi_buffers两个缓冲区大小的限制。
fastcgi_force_ranges
- 语法: fastcgi_force_ranges on|off;
- 默认: fastcgi_force_ranges off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 无论这些响应中的"Accept-Ranges"字段如何,都为来自FastCGI服务器的缓存和未缓存响应启用字节范围支持。
fastcgi_limit_rate
- 语法: fastcgi_limit_rate rate;
- 参数说明:
- 默认: fastcgi_limit_rate 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 限制从FastCGI服务器读取响应的速度。该限制是针对每个请求设置的,因此如果Nginx同时打开两个到FastCFI服务器的连接,则总体速率将是指定限制的两倍。仅当启用了FastCGI服务器的响应缓冲时,此限制才有效。
fastcgi_cache
- 语法: fastcgi_cache zone|off;
- 参数说明:
zone – 表示缓存的区域,可以包含变量off – 表示禁用从先前配置级别继承缓存信息 - 默认: fastcgi_cache off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义用于缓存的共享内存区域,同一个区域可以在多个地方使用。
fastcgi_cache_key
- 语法: fastcgi_cache_key string;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义一个用于缓存的键。
fastcgi_cache_path
- 语法: fastcgi_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [min_free=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
- 默认: —
- 上下文: http块
- 说明: 设置缓存的路径和其他参数,缓存数据存储在文件中,缓存中的键名和文件名都是对代理URL使用MD5函数生成的结果。
fastcgi_cache_bypass
fastcgi_no_cache
fastcgi_cache_valid
fastcgi_cache_min_uses
- 语法: fastcgi_cache_min_uses number;
- 默认: fastcgi_cache_min_uses 1;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置一个请求数,当超过该请求数之后将缓存响应。
fastcgi_cache_max_range_offset
- 语法: fastcgi_cache_max_range_offset number;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置字节范围请求的字节偏移量,如果范围超出了偏移量,范围请求将被传递到FastCGI服务器,而响应将不会被缓存。
fastcgi_cache_use_stale
- 语法: fastcgi_cache_use_stale error|timeout|invalid_header|updating|http_500|http_503|http_403|http_404|http_429|off …;
- 默认: fastcgi_cache_use_stale off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 确定在什么情况下,当与FastCGI服务器通信时发生错误时,可以使用过时的缓存响应,该指令的参数与fastcgi_next_upstream指令的参数匹配。如果无法选择FastCGI服务器来处理请求,错误参数还允许使用过时的缓存响应。此外,如果当前正在更新缓存响应,则更新参数允许使用过时的响应,这允许在更新缓存数据时最小化对FastCGI服务器的访问次数。也可以在响应失效后在响应头中直接启用过期缓存响应,这比使用指令参数具有更低的优先级。"Cache-Control"报头字段的"stale-while-revalidate"扩展允许在当前正在更新的情况下使用陈旧的缓存响应,"Cache-Control"报头字段的"stale-if-error"扩展允许在出现错误时使用陈旧的缓存响应。当填充一个新的缓存元素时,为了最小化对FastCGI服务器的访问次数,可以使用fastcgi_cache_lock指令。
fastcgi_cache_methods
- 语法: fastcgi_cache_methods GET|HEAD|POST [GET|HEAD|POST …];
- 默认: fastcgi_cache_methods GET HEAD;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 如果此指令中列出了客户端请求方法,则响应将被缓存。GET和HEAD方法始终添加到列表中,但建议明确指定它们。
fastcgi_cache_lock
- 语法: fastcgi_cache_lock on|off;
- 默认: fastcgi_cache_lock off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当启用时,一次只允许一个请求填充一个新的缓存元素,根据fastcgi_cache_key指令,通过传递一个请求到FastCGI服务器。对同一个缓存元素的其它请求要么等待响应出现在缓存中,要么等待释放这个元素的缓存锁,直到fastcgi_cache_lock_timeout指令设置的时间到达。
fastcgi_cache_lock_timeout
- 语法: fastcgi_cache_lock_timeout time;
- 默认: fastcgi_cache_lock_timeout 5s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为fastcgi_cache_lock设置超时,当time过期时,请求将被传递到FastCGI服务器,但是响应将不会被缓存。
fastcgi_cache_lock_age
- 语法: fastcgi_cache_lock_age time;
- 默认: fastcgi_cache_lock_age 5s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 如果上次传递给FastCGI服务器用于填充新缓存元素的请求在指定的时间内没有完成,那么可能会再传递一个请求给FastCGI服务器。
fastcgi_cache_revalidate
- 语法: fastcgi_cache_revalidate on|off;
- 默认: fastcgi_cache_revalidate off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许使用带有"If-Modified-Since"和"If-None-Match"头字段的条件请求重新验证过期的缓存项。
fastcgi_cache_background_update
- 语法: fastcgi_cache_background_update on|off;
- 默认: fastcgi_cache_background_update off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许启动后台子请求来更新过期的缓存项,同时将过期的缓存响应返回给客户端。注意,有必要允许在更新时使用陈旧的缓存响应。
fastcgi_temp_path
fastcgi_max_temp_file_size
- 语法: fastcgi_max_temp_file_size size;
- 参数说明:
size – 为0时表示禁止使用临时文件来缓冲响应信息 - 默认: fastcgi_max_temp_file_size 1024m;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当缓存来自FastCGI服务器的响应是启用的,并且整个响应不适合fastcgi_buffer_size和fastcgi_buffers指令设置的缓冲区,响应的一部分可以保存到一个临时文件。这个指令设置的就是这个临时文件的最大大小。每次写入临时文件的数据大小由fastcgi_temp_file_write_size指令设置。
fastcgi_temp_file_write_size
- 语法: fastcgi_temp_file_write_size size;
- 默认: fastcgi_temp_file_write_size 8k|16k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当FastCGI服务器的响应缓存到临时文件时,限制一次写入到临时文件的数据的大小。默认情况下,大小受fastcgi_buffer_size和fastcgi_buffers指令设置的两个缓冲区的限制。临时文件的最大大小是由fastcgi_max_temp_file_size指令设置的。
fastcgi_next_upstream
- 语法: fastcgi_next_upstream error|timeout|invalid_header|http_500|http_503|http_403|http_404|http_429|non_idempotent|off …;
- 参数说明:
error – 表示与服务器建立连接、向其传递请求或读取响应头时发生错误timeout – 表示与服务器建立连接、向其传递请求或读取响应标头时发生超时invalid_header – 表示服务器返回空或无效的响应http_500 – 表示服务器返回响应码为500的响应http_503 – 表示服务器返回响应码为503的响应http_403 – 表示服务器返回响应码为403的响应http_404 – 表示服务器返回响应码为404的响应http_429 – 表示服务器返回响应码为429的响应non_idempotent – 通常,如果请求已发送到上游服务器,则使用“非幂等”方法(POST, LOCK, PATCH)的请求不会传递到下一个服务器,显式启用该参数允许重试此类请求off – 表示禁止将请求传递到下一个服务器 - 默认: fastcgi_next_upstream error timeout;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定在何种情况下应将请求传递给下一个服务器。
fastcgi_next_upstream_tries
- 语法: fastcgi_next_upstream_tries number;
- 默认: fastcgi_next_upstream_tries 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 限制请求传递到下一个服务器的可能尝试次数,number为0时表示关闭此限制。
fastcgi_next_upstream_timeout
- 语法: fastcgi_next_upstream_timeout time;
- 默认: fastcgi_next_upstream_timeout 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 限制请求传递到下一个服务器的时间,time为0时表示关闭此限制。
fastcgi_param
- 语法: fastcgi_param parameter value [if_not_empty];
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置一个应该传递给FastCGI服务器的参数,该值可以包含文本、变量或者它们的组合。当且仅当当前级别没有定义fastcgi_param指令时,这些指令从上一个配置级别继承。
fastcgi_pass_header
- 语法: fastcgi_pass_header field;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许从FastCGI服务器向客户端传递禁用的报头字段。
fastcgi_hide_header
- 语法: fastcgi_hide_header field;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 默认情况下,Nginx不从FastCGI服务器传递拥有头字段"Status"和"X-Accel-…"的响应到客户端。fastcgi_hide_header指令设置了其他不会被传递的字段。相反,如果需要允许传递字段,可以使用fastcgi_pass_header指令。
fastcgi_ignore_headers
- 语法: fastcgi_ignore_headers field [field …];
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 禁止处理FastCGI服务器的某些响应报头字段,以下字段可以忽略:“X-Accel-Expires”、“X-Accel-Redirect”、“X-Accel-Limit-Rate”、“X-Accel-Buffering”、“X-Accel-Charset”、“Expires”、“Cache-Control”、“Set-Cookie"和"Vary”。如果未禁用,则处理这些报头字段具有以下效果:
- “X-Accel-Expires”、“Expires”、“Cache-Control”、“Set-Cookie”、"Vary"设置响应缓存的参数;
- "X-Accel-Redirect"执行到指定URI的内部重定向;
- "X-Accel-Limit-Rate"设置传输响应给客户端的速率限制;
- "X-Accel-Buffering"启用或禁用响应缓冲;
- "X-Accel-Charset"设置响应所需字符集。
fastcgi_catch_stderr
fastcgi_keep_conn
2.3.14、ngx_http_flv_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-http_flv_module
flv
- 语法: flv;
- 默认: —
- 上下文: http块中的location块
- 说明: 该模块为Flash视频(FLV格式文件)提供伪流服务器端支持。可以在请求URI的查询字段中特别地使用start参数去处理请求,Nginx会根据请求字节偏移量start去发送文件特定位置的内容(带有前置FLV头)。
2.3.15、ngx_http_geoip_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-http_geoip_module 该模块需要 MaxMind GeoIP 库的支持
geoip_country
- 语法: geoip_country file;
- 默认: —
- 上下文: http块
- 说明: 指定用于根据客户端IP地址确定国家的数据库。使用此数据库时可用以下变量:
- $geoip_country_code:两个字母的国家/地区代码,例如"RU"、“US”
- $geoip_country_code3:三个字母的国家/地区代码,例如"RUS"、“USA”
- $geoip_country_name:国家名称,例如"Russian Federation"、“United States”
geoip_org
- 语法: geoip_org file;
- 默认: —
- 上下文: http块
- 说明: 指定用于根据客户端 IP 地址确定组织的数据库。使用此数据库时可用以下变量:
- $geoip_org:组织名称,例如"The University of Melbourne"
geoip_city
- 语法: geoip_city file;
- 默认: —
- 上下文: http块
- 说明: 指定用于根据客户端IP地址确定国家、地区和城市的数据库。使用此数据库时可用以下变量:
- $geoip_city_continent_code:两个字母的大陆代码,例如"EU"、“NA”
- $geoip_city_country_code:两个字母的国家/地区代码,例如"RU"、“US”
- $geoip_city_country_code3:三个字母的国家/地区代码,例如"RUS"、“USA”
- $geoip_city_country_name:国家名称,例如"Russian Federation"、“United States”
- $geoip_dma_code:根据Google AdWords API中的地理定位
- $geoip_latitude:纬度
- $geoip_longitude:经度
- $geoip_region:双符号国家/地区代码(地区、领土、州、省、联邦土地等),例如"48"、“DC”
- $geoip_region_name:国家/地区名称(地区、领地、州、省、联邦土地等),例如"Moscow City"、“District of Columbia”
- $geoip_city:城市名称,例如"Moscow"、“Washington”
- $geoip_postal_code:邮政编码
geoip_proxy
- 语法: geoip_proxy address|CIDR;
- 默认: —
- 上下文: http块
- 说明: 定义可信地址,当请求来自可信地址时,将使用"X-Forwarded-For"请求头字段中的地址。
geoip_proxy_recursive
2.3.16、ngx_http_geo_module模块
geo
- 语法: geo [$address] $variable {…}
- 默认: —
- 上下文: http块
- 说明: 根据客户端IP地址创建具有值的变量。
2.3.17、ngx_http_grpc_module模块
该模块依赖于ngx_http_v2_module模块
grpc_pass
grpc_bind
grpc_socket_keepalive
- 语法: grpc_socket_keepalive on|off;
- 默认: grpc_socket_keepalive off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为发送到gRPC服务器的连接配置"TCP keepalive"选项。默认情况下,操作系统的设置对套接字有效,如果该指令的值被设置为"on",则该套接字的SO_KEEPALIVE选项将被打开。
grpc_connect_timeout
- 语法: grpc_connect_timeout time;
- 默认: grpc_connect_timeout 60s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义与gRPC服务器建立连接的超时时间。需要注意的是,这个超时时间通常不能超过75秒。
grpc_send_timeout
- 语法: grpc_send_timeout time;
- 默认: grpc_send_timeout 60s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置将请求传输到gRPC服务器的超时时间。这里指的是在两次连续写入操作之间间隔,而不是针对整个请求的传输。如果gRPC服务器在此时间内没有收到任何消息,则连接关闭。
grpc_intercept_errors
- 语法: grpc_intercept_errors on|off;
- 默认: grpc_intercept_errors off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 确定是否应该将响应码大于或等于300的gRPC服务器响应传递给客户端,或者拦截并重定向到Nginx以使用error_page指令进行处理。
grpc_buffer_size
- 语法: grpc_buffer_size size;
- 默认: grpc_buffer_size 4k|8k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置用于读取从gRPC服务器接收到的响应的缓冲区大小。一旦接收到响应,就同步地将其传递给客户机。
grpc_read_timeout
- 语法: grpc_read_timeout time;
- 默认: grpc_read_timeout 60s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义从gRPC服务器读取响应的超时时间。这里指的是在两次连续读取操作之间间隔,而不是针对整个响应的传输。如果gRPC服务器在此时间内没有传输任何内容,则连接关闭。
grpc_next_upstream
- 语法: grpc_next_upstream error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_403|http_404|http_429|non_idempotent|off …;
- 参数说明:
error – 表示与服务器建立连接、向其传递请求或读取响应头时发生错误timeout – 表示与服务器建立连接、向其传递请求或读取响应标头时发生超时invalid_header – 表示服务器返回空或无效的响应http_500 – 表示服务器返回响应码为500的响应http_502 – 表示服务器返回响应码为502的响应http_503 – 表示服务器返回响应码为503的响应http_504 – 表示服务器返回响应码为504的响应http_403 – 表示服务器返回响应码为403的响应http_404 – 表示服务器返回响应码为404的响应http_429 – 表示服务器返回响应码为429的响应non_idempotent – 通常,如果请求已发送到上游服务器,则使用“非幂等”方法(POST, LOCK, PATCH)的请求不会传递到下一个服务器,显式启用该参数允许重试此类请求off – 表示禁止将请求传递到下一个服务器 - 默认: grpc_next_upstream error timeout;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定在哪些情况下应将请求传递到下一个服务器。
grpc_next_upstream_tries
- 语法: grpc_next_upstream_tries number;
- 默认: grpc_next_upstream_tries 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 限制将请求传递到下一个服务器的可能尝试次数,number为0时表示关闭此限制。
grpc_next_upstream_timeout
- 语法: grpc_next_upstream_timeout time;
- 默认: grpc_next_upstream_timeout 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 限制请求传递到下一个服务器的时间,time为0时表示关闭此限制。
grpc_set_header
grpc_pass_header
- 语法: grpc_pass_header field;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许从gRPC服务器向客户端传递禁用的报头字段。
grpc_hide_header
- 语法: grpc_hide_header field;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 默认情况下,Nginx不从gRPC服务器传递拥有头字段"Date"、" Server"和"X-Accel-…"的响应到客户端。grpc_hide_header指令设置了其他不会被传递的字段。相反,如果需要允许字段的传递,则可以使用grpc_pass_header指令。
grpc_ignore_headers
- 语法: grpc_ignore_headers field [field …];
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 禁止处理gRPC服务器的某些响应报头字段。以下字段可以忽略:“X-Accel-Redirect"和"X-Accel-Charset”。如果未禁用,则处理这些报头字段的效果如下:
- "X-Accel-Redirect"执行到指定URI的内部重定向;
- "X-Accel-Charset"设置响应所需字符集。
grpc_ssl_session_reuse
- 语法: grpc_ssl_session_reuse on|off;
- 默认: grpc_ssl_session_reuse on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 确定在使用gRPC服务器时SSL会话是否可以重用。如果日志中出现错误"SSL3_GET_FINISHED:digest check failed",请尝试禁用会话重用。
grpc_ssl_protocols
- 语法: grpc_ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
- 默认: grpc_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为gRPC SSL服务器的请求启用指定的协议。
grpc_ssl_ciphers
- 语法: grpc_ssl_ciphers ciphers;
- 默认: grpc_ssl_ciphers DEFAULT;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定向gRPC SSL服务器请求时启用的密码,密码以OpenSSL库能够理解的格式指定。可以使用"openssl ciphers"命令查看完整列表。
grpc_ssl_name
- 语法: grpc_ssl_name name;
- 默认: grpc_ssl_name host from grpc_pass;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许覆盖用于验证gRPC SSL服务器的证书并在与gRPC SSL服务器建立连接时通过SNI传递的服务器名称。默认情况下,使用来自grpc_pass的主机部分。
grpc_ssl_server_name
- 语法: grpc_ssl_server_name on|off;
- 默认: grpc_ssl_server_name off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 在与gRPC SSL服务器建立连接时,启用或禁用通过TLS服务器名称指示扩展(SNI,RFC 6066)传递服务器名称。
grpc_ssl_verify
- 语法: grpc_ssl_verify on|off;
- 默认: grpc_ssl_verify off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用gRPC SSL服务器证书的验证。
grpc_ssl_verify_depth
- 语法: grpc_ssl_verify_depth number;
- 默认: grpc_ssl_verify_depth 1;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置gRPC SSL服务器证书链中的验证深度。
grpc_ssl_trusted_certificate
- 语法: grpc_ssl_trusted_certificate file;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定一个PEM格式的受信任CA证书用于验证gRPC SSL服务器的证书。
grpc_ssl_crl
- 语法: grpc_ssl_crl file;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定一个PEM格式的撤销证书(CRL)用于验证gRPC SSL服务器的证书。
grpc_ssl_certificate
- 语法: grpc_ssl_certificate file;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定一个PEM格式的证书用于验证gRPC SSL服务器的证书。
grpc_ssl_certificate_key
- 语法: grpc_ssl_certificate_key file;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定一个PEM格式的带密钥的证书用于验证gRPC SSL服务器的证书。可以指定值engine:name:id代替文件,它从OpenSSL engine name中加载具有指定id的密钥。
grpc_ssl_password_file
- 语法: grpc_ssl_password_file file;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定一个带有密钥密码短语的文件,其中每个密码短语在单独的行上指定,在加载密钥时依次尝试密码短语。
2.3.18、ngx_http_gunzip_filter_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-http_gunzip_filter_module
gunzip
- 语法: gunzip on|off;
- 默认: gunzip off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为缺乏gzip支持的客户端启用或禁用gzip响应的解压缩。如果启用,在确定客户端是否支持gzip时也会考虑以下指令:gzip_http_version、gzip_proxy和gzip_disable。
gunzip_buffers
- 语法: gunzip_buffers number size;
- 默认: gunzip_buffers 32 4k|16 8k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置用于解压缩响应的缓冲区的数量和大小。默认情况下,缓冲区大小等于一页内存,有可能是4K或8K,具体取决于平台。
2.3.19、ngx_http_gzip_filter_module模块
gzip
- 语法: gzip on|off;
- 默认: gzip off;
- 上下文: http块、http块中的server块、http块中的location块、http块中的location块中的if块
- 说明: 启用或禁用对响应信息的压缩。
gzip_buffers
- 语法: gzip_buffers number size;
- 默认: gzip_buffers 32 4k|16 8k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置用于压缩响应信息的缓冲区的数量和大小。默认情况下,缓冲区大小等于一页内存,有可能是4K或8K,具体取决于平台。
gzip_types
- 语法: gzip_types mime-type [mime-type …];
- 默认: gzip_types text/html;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许自行指定对MIME类型的响应信息进行压缩,特殊值"*"表示匹配任何MIME类型,"text/html"类型的响应信息总是被压缩的。
gzip_comp_level
- 语法: gzip_comp_level 1|2|3|4|5|6|7|8|9;
- 默认: gzip_comp_level 1;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置响应信息的压缩级别,取值范围为1~9。
gzip_window
- 语法: gzip_window 512|1k|2k|4k|8k|16k|32k;
- 默认: gzip_window 32k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置deflateInit2函数的windowBits参数,事实上该参数更多的作用是压缩模式选择,默认的32k参数代表的就是压缩为gzip格式。
gzip_hash
- 语法: gzip_hash 512|1k|2k|4k|8k|16k|32k|64k|128k;
- 默认: gzip_hash 32k|64k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置压缩过程中的内存限制。默认值有可能是32k或64k,具体取决于平台。
postpone_gzipping
- 语法: postpone_gzipping size;
- 默认: postpone_gzipping 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 在开始压缩前定义一个最小压缩数据门槛。
gzip_no_buffer
- 语法: gzip_no_buffer on|off;
- 默认: gzip_no_buffer off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 默认情况下,在将数据发送到客户端之前Nginx会等待,直到至少一个缓存被数据填满,如果开启该指令,就会禁用缓存。
gzip_min_length
- 语法: gzip_min_length length;
- 默认: gzip_min_length 20;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置将被压缩的响应信息的最小长度,长度仅从"Content-Length"字段确定。
2.3.20、ngx_http_gzip_static_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-http_gzip_static_module
gzip_static
- 语法: gzip_static on|off|always;
- 参数说明:
on – 表示会检查预压缩文件是否存在off – 表示进制发送预压缩文件always – 表示表示在始终认为预压缩文件存在,如果磁盘上没有未压缩的文件,或者使用了ngx_http_gunzip_module模块,这将非常有用 - 默认: gzip_static off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 该模块允许发送带有".gz"文件扩展名的预压缩文件。
2.3.21、ngx_http_headers_filter_module模块
expires
- 语法: expires [modified] time;
????expires epoch|max|off; - 参数说明:
modified – “Expires"字段中的时间为当前时间和指令中指定的时间的总和,如果使用了该参数,那么时间计算为文件的修改时间和指令中指定的时间的总和。另外,可以使用”@"前缀指定一天中的某个时间,比如:expires @15h30m;time – 该参数可以是正或负的值,“Cache-Control"字段的内容取决于指定时间的符号:如果time为负则设置为"Cache-Control: no-cache”,如果time为正或零则设置为"Cache-Control: max-age= t",其中t是指令中指定的时间,以秒为单位epoch – 表示将"Expires"的值设置为"Thu, 01 Jan 1970 00:00:01 GMT",将"Cache-Control"的值设置为"no-cache"max – 表示将"Expires"的值设置为"Thu, 31 Dec 2037 23:55:55 GMT",将"Cache-Control"的值设置为10年off – 表示禁止添加或修改响应头的"Expires"和"Cache-Control"字段 - 默认: expires off;
- 上下文: http块、http块中的server块、http块中的location块、http块中的location块中的if块
- 说明: 如果响应代码等于200、201, 204, 206, 301, 302, 303, 304, 307或308时,则启用或禁用添加或修改响应头的"Expires"和"Cache-Control"字段。
add_header
- 语法: add_header name value [always];
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块、http块中的location块中的if块
- 说明: 如果响应代码等于200、201、204、206、301、302、303、304、307或 308,则将指定字段添加到响应头,参数值可以包含变量。可以设置多个add_header指令,当且仅当add_header当前级别上没有定义任何指令时,这些指令才从先前的配置级别继承。如果指定了参数always,则无论响应代码如何,都将添加标头字段。
add_trailer
- 语法: add_trailer name value [always];
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块、http块中的location块中的if块
- 说明: 如果响应代码等于200、201、206、301、302、303、307或308,则将指定字段添加到响应的末尾,参数值可以包含变量。可以设置多个add_trailer指令,当且仅当add_trailer当前级别上没有定义任何指令时,这些指令才从先前的配置级别继承。如果指定了参数always,则无论响应代码如何,都将添加指定的字段。
2.3.22、ngx_http_image_filter_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-http_image_filter_module 该模块需要 libgd 库的支持
image_filter
- 语法: image_filter off;
????image_filter test; ????image_filter size; ????image_filter rotate 90|180|270; ????image_filter resize width height; ????image_filter crop width height; - 参数说明:
off – 表示关闭当前层级改模块的处理test – 表示确保响应是JPEG、GIF、PNG或WebP格式的图像,否则将返回415(Unsupported Media Type)错误size – 表示以JSON格式输出有关图像的信息rotate 90|180|270 – 表示按指定的度数逆时针旋转图像,参数值可以包含变量resize width height – 表示按比例将图像缩小到指定的大小,如果仅想要减少一个维度,可以将另一个维度指定为"-",如果出现错误,服务器将返回代码415(Unsupported Media Type),参数值可以包含变量,当与rotate参数一起使用时,resize将会更早被调用crop width height – 表示按比例将图像缩小到较大的一侧,并在另一侧裁剪无关的边缘,如果仅想要减少一个维度,可以将另一个维度指定为"-",如果出现错误,服务器将返回代码415(Unsupported Media Type),参数值可以包含变量,当与rotate参数一起使用时,旋转发生在减少之前 - 默认: image_filter off;
- 上下文: http块中的location块
- 说明: 设置要对图像执行的转换类型。
image_filter_jpeg_quality
- 语法: image_filter_jpeg_quality quality;
- 默认: image_filter_jpeg_quality 75;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置转换后的JPEG图像的质量,取值范围为1~100。较小的值通常意味着较低的图像质量和更少的数据传输,建议最大值为95,参数值可以包含变量。
image_filter_webp_quality
- 语法: image_filter_webp_quality quality;
- 默认: image_filter_webp_quality 80;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置转换后的WebP图像的质量,取值范围为1~100。较小的值通常意味着较低的图像质量和更少的数据传输,参数值可以包含变量。
image_filter_sharpen
- 语法: image_filter_sharpen percent;
- 默认: image_filter_sharpen 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 增加最终图像的清晰度,锐度百分比可超过100,零值表示禁用锐化,参数值可以包含变量。
image_filter_transparency
- 语法: image_filter_transparency on|off;
- 默认: image_filter_transparency on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义在使用调色板指定的颜色转换GIF图像或PNG图像时是否应保留透明度,透明度的损失导致图像质量更好,始终保留PNG图像中的Alpha通道透明度。
image_filter_interlace
- 语法: image_filter_interlace on|off;
- 默认: image_filter_interlace off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 如果启用,最终图像将交错,对于JPEG图像,最终将采用"渐进式 JPEG"格式。
image_filter_buffer
- 语法: image_filter_buffer size;
- 默认: image_filter_buffer 1m;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置用于读取图像的缓冲区的最大大小,当超过大小时,服务器返回错误415(Unsupported Media Type)。
2.3.23、ngx_http_index_module模块
index
2.3.24、ngx_http_limit_conn_module模块
limit_conn_zone
limit_conn
limit_conn_log_level
- 语法: limit_conn_log_level info|notice|warn|error;
- 默认: limit_conn_log_level error;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为服务器限制连接数的情况设置所需的日志记录级别。
limit_conn_status
- 语法: limit_conn_status code;
- 默认: limit_conn_status 503;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置状态代码以响应被拒绝的请求。
limit_conn_dry_run
- 语法: limit_conn_dry_run on|off;
- 默认: limit_conn_dry_run off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用试运行模式。在这种模式下,连接数没有限制,但是在共享内存区,过多的连接数照常计算。
2.3.25、ngx_http_limit_req_module模块
limit_req_zone
limit_req
- 语法: limit_req zone zone=name [burst=number] [nodelay|delay=number];
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置共享内存区域和请求的最大突发大小。如果请求速率超过为区域配置的速率,则它们的处理将被延迟,以便以定义的速率处理请求。过多的请求会被延迟,直到它们的数量超过最大突发大小,在这种情况下,请求会因错误而终止。默认情况下,最大突发大小为零。
limit_req_log_level
- 语法: limit_req_log_level info|notice|warn|error;
- 默认: limit_req_log_level error;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当服务器由于速率超过或延迟请求处理而拒绝处理请求时,设置所需的日志记录级别。延迟的记录级别比拒绝低一分;例如,如果limit_req_log_level notice指定了"",则延迟与info级别一起记录。
limit_req_status
- 语法: limit_req_status code;
- 默认: limit_req_status 503;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置状态代码以响应被拒绝的请求。
limit_req_dry_run
- 语法: limit_req_dry_run on|off;
- 默认: limit_req_dry_run off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用试运行模式。在这种模式下,请求处理速率不受限制,但是在共享内存区域中,过度请求的数量照常计算。
2.3.26、ngx_http_log_module模块
log_format
access_log
open_log_file_cache
2.3.27、ngx_http_map_module模块
map
map_hash_max_size
- 语法: map_hash_max_size size;
- 默认: map_hash_max_size 2048;
- 上下文: http块
- 说明: 设置映射变量哈希表的最大容量。
map_hash_bucket_size
- 语法: map_hash_bucket_size size;
- 默认: map_hash_bucket_size 32|64|128;
- 上下文: http块
- 说明: 设置映射变量哈希桶的容量。
2.3.28、ngx_http_memcached_module模块
memcached_pass
memcached_bind
memcached_socket_keepalive
- 语法: memcached_socket_keepalive on|off;
- 默认: memcached_socket_keepalive off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为发送到缓存服务器的连接配置"TCP keepalive"行为。默认情况下,操作系统的设置对套接字有效,如果该指令的值被设置为"on",则该套接字的SO_KEEPALIVE选项将被打开。
memcached_connect_timeout
- 语法: memcached_connect_timeout time;
- 默认: memcached_connect_timeout 60s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义与缓存服务器建立连接的超时时间。需要注意的是,这个超时时间通常不能超过75秒。
memcached_send_timeout
- 语法: memcached_send_timeout time;
- 默认: memcached_send_timeout 60s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置将请求传输到缓存服务器的超时时间。这里指的是在两次连续写入操作之间间隔,而不是针对整个请求的传输。如果缓存服务器在此时间内没有收到任何消息,则连接关闭。
memcached_buffer_size
- 语法: memcached_buffer_size size;
- 默认: memcached_buffer_size 4k|8k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置用于读取从缓存服务器接收到的响应的缓冲区大小。一旦接收到响应,就同步地将其传递给客户机。
memcached_read_timeout
- 语法: memcached_read_timeout time;
- 默认: memcached_read_timeout 60s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义从缓存服务器读取响应的超时时间。这里指的是在两次连续读取操作之间间隔,而不是针对整个响应的传输。如果缓存服务器在此时间内没有传输任何内容,则连接关闭。
memcached_next_upstream
- 语法: grpc_next_upstream error|timeout|invalid_response|not_found|off …;
- 参数说明:
error – 表示与服务器建立连接、向服务器传递请求或读取响应头时发生错误timeout – 表示与服务器建立连接、向服务器传递请求或读取响应头时发生超时invalid_response – 表示服务器返回空或无效的响应not_found – 表示在服务器上找不到响应off – 表示禁止将请求传递到下一个服务器 - 默认: grpc_next_upstream error timeout;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定在哪些情况下应将请求传递到下一个服务器。
memcached_next_upstream_tries
- 语法: memcached_next_upstream_tries number;
- 默认: memcached_next_upstream_tries 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 限制将请求传递到下一个服务器的可能尝试次数,number为0时表示关闭此限制。
memcached_next_upstream_timeout
- 语法: memcached_next_upstream_timeout time;
- 默认: memcached_next_upstream_timeout 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 限制请求传递到下一个服务器的时间,time为0时表示关闭此限制。
memcached_gzip_flag
- 语法: memcached_gzip_flag flag;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 如果缓存服务器响应中存在flag标志,则将"Content-Encoding"响应头字段的值设置为"gzip"。
2.3.29、ngx_http_mirror_module模块
mirror
- 语法: mirror uri|off;
- 默认: mirror off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 将原始请求拷贝到的指定的uri去,可以在相同的配置级别上指定多个镜像。
mirror_request_body
2.3.30、ngx_http_mp4_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-http_mp4_module
mp4
- 语法: mp4;
- 默认: —
- 上下文: http块中的location块
- 说明: 该模块为MP4格式文件提供伪流服务器端支持,这些文件通常具有.mp4、.m4v或.m4a的文件扩展名。
mp4_buffer_size
- 语法: mp4_buffer_size size;
- 默认: mp4_buffer_size 512K;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置用于处理MP4格式文件的缓冲区的初始大小。
mp4_max_buffer_size
2.3.31、ngx_http_perl_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-http_perl_module 改模块需要 Perl 5.6.1 或更高版本,C编译器应该与用于构建Perl的编译器兼容
perl_modules
- 语法: perl_modules path;
- 默认: —
- 上下文: http块
- 说明: 为Perl模块设置附加路径。
perl_require
- 语法: perl_require module;
- 默认: —
- 上下文: http块
- 说明: 定义将在每次重新配置期间加载的模块的名称,同一级别可以存在多个perl_require指令。
perl
- 语法: perl module::function|‘sub {…}’;
- 默认: —
- 上下文: http块中的location块、http块中的limit_except块
- 说明: 设置Perl处理程序。
perl_set
- 语法: perl_set $variable module::function|‘sub {…}’;
- 默认: —
- 上下文: http块
- 说明: 为指定的变量设置Perl处理程序。
2.3.32、ngx_http_proxy_module模块
proxy_pass
proxy_redirect
proxy_cookie_domain
proxy_cookie_path
proxy_store
- 语法: proxy_store on|off|string;
- 参数说明:
on – 表示将文件保存到alias或root对应的路径off – 表示禁止保存文件string – 表示显式地设置文件名,文件名可以使用变量来代替 - 默认: proxy_store off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用将文件保存到磁盘。
proxy_store_access
proxy_buffering
- 语法: proxy_buffering on|off;
- 默认: proxy_buffering on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用来自代理服务器的响应缓冲。启用缓冲后,Nginx会尽快收到来自代理服务器的响应,将其保存到由proxy_buffer_size和proxy_buffers指令设置的缓冲区中。如果整个响应过大,可以将其中的一部分保存到磁盘上的临时文件中。写入临时文件由proxy_max_temp_file_size和 proxy_temp_file_write_size指令控制。当缓冲被禁用时,响应会在收到时立即同步传递给客户端。Mginx不会尝试从代理服务器读取整个响应。Nginx一次可以从服务器接收的最大数据大小由proxy_buffer_size指令设置。也可以通过在"X-Accel-Buffering"响应头字段中传递"yes"或"no"来启用或禁用缓冲。可以使用proxy_ignore_headers指令禁用此功能。
proxy_request_buffering
- 语法: proxy_request_buffering on|off;
- 默认: proxy_request_buffering on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用客户端请求正文的缓冲。启用缓冲后,在将请求发送到代理服务器之前,将从客户端读取整个请求正文。当缓存被禁用时,请求正文在收到时立即被发送到代理服务器。在这种情况下,如果Nginx已经开始发送请求正文,请求就不能被传递到下一个服务器。当使用HTTP/1.1分块传输编码发送原始请求正文时,请求正文将被缓冲,而不管该指令的值,除非HTTP/1.1启用代理。
proxy_ignore_client_abort
- 语法: proxy_ignore_client_abort on|off;
- 默认: proxy_ignore_client_abort off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 确定当客户端在不等待响应的情况下关闭连接时,是否应关闭与代理服务器的连接。
proxy_bind
proxy_socket_keepalive
- 语法: proxy_socket_keepalive on|off;
- 默认: proxy_socket_keepalive off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为发送到代理服务器的连接配置"TCP keepalive"行为。默认情况下,操作系统的设置对套接字有效,如果该指令的值被设置为"on",则该套接字的SO_KEEPALIVE选项将被打开。
proxy_connect_timeout
- 语法: proxy_connect_timeout time;
- 默认: proxy_connect_timeout 60s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义与代理服务器建立连接的超时时间。需要注意的是,这个超时时间通常不能超过75秒。
proxy_send_timeout
- 语法: proxy_send_timeout time;
- 默认: proxy_send_timeout 60s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置将请求传输到代理服务器的超时时间。这里指的是在两次连续写入操作之间间隔,而不是针对整个请求的传输。如果缓存服务器在此时间内没有收到任何消息,则连接关闭。
proxy_send_lowat
- 语法: proxy_send_lowat size;
- 默认: proxy_send_lowat 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 该指令在Linux上无效。
proxy_intercept_errors
- 语法: proxy_intercept_errors on|off;
- 默认: proxy_intercept_errors off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 确定是否应该将响应码大于或等于300的代理服务器响应传递给客户端,或者拦截并重定向到Nginx以使用error_page指令进行处理。
proxy_set_header
proxy_headers_hash_max_size
- 语法: proxy_headers_hash_max_size size;
- 默认: proxy_headers_hash_max_size 512;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置proxy_hide_header和proxy_set_header指令所使用的哈希表的最大容量。
proxy_headers_hash_bucket_size
- 语法: proxy_headers_hash_bucket_size size;
- 默认: proxy_headers_hash_bucket_size 64;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置proxy_hide_header和proxy_set_header指令所使用的哈希桶的容量。
proxy_set_body
- 语法: proxy_set_body value;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许重新定义传递给代理服务器的请求正文,该值可以包含文本、变量或者它们的组合。
proxy_method
- 语法: proxy_method method;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定在转发到代理服务器的请求中使用的HTTP方法,而不是使用来自客户端请求的方法,参数值可以包含变量。
proxy_pass_request_headers
- 语法: proxy_pass_request_headers on|off;
- 默认: proxy_pass_request_headers on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指示是否将原始请求的报头字段传递给代理服务器。
proxy_pass_request_body
- 语法: proxy_pass_request_body on|off;
- 默认: proxy_pass_request_body on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指示是否将原始请求正文信息传递给代理服务器。
proxy_buffer_size
- 语法: proxy_buffer_size size;
- 默认: proxy_buffer_size 4k|8k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置用于读取从代理服务器接收的响应的第一部分的缓冲区的大小,这部分通常包含一个小的响应头。默认情况下,缓冲区大小等于一页内存,有可能是4K或8K,具体取决于平台。
proxy_read_timeout
- 语法: proxy_read_timeout time;
- 默认: proxy_read_timeout 60s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义从代理服务器读取响应的超时时间。这里指的是在两次连续读取操作之间间隔,而不是针对整个响应的传输。如果缓存服务器在此时间内没有传输任何内容,则连接关闭。
proxy_buffers
- 语法: proxy_buffers number size;
- 默认: proxy_buffers 8 4k|8k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为单个连接设置用于从代理服务器读取响应的缓冲区的数量和大小。默认情况下,缓冲区大小等于一页内存,有可能是4K或8K,具体取决于平台。
proxy_busy_buffers_size
- 语法: proxy_busy_buffers_size size;
- 默认: proxy_busy_buffers_size 8k|16k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当启用了对来自代理服务器的响应的缓存时,该指令可以限制缓冲区的总大小,可以是正忙于发送到客户端的响应,而响应还没有完全读取。同时,其余的缓冲区可用于读取响应,如果需要,还可以缓冲对临时文件的部分响应。默认情况下,大小受proxy_buffer_size和proxy_buffers两个缓冲区大小的限制。
proxy_force_ranges
- 语法: proxy_force_ranges on|off;
- 默认: proxy_force_ranges off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 无论这些响应中的"Accept-Ranges"字段如何,都为来自代理服务器的缓存和未缓存响应启用字节范围支持。
proxy_limit_rate
- 语法: proxy_limit_rate rate;
- 参数说明:
- 默认: proxy_limit_rate 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 限制从代理服务器读取响应的速度。该限制是针对每个请求设置的,因此如果Nginx同时打开两个到代理服务器的连接,则总体速率将是指定限制的两倍。仅当启用了代理服务器的响应缓冲时,此限制才有效。
proxy_cache
- 语法: proxy_cache zone|off;
- 参数说明:
zone – 可以包含变量,表示缓存的区域off – 表示禁用从先前配置级别继承缓存信息 - 默认: proxy_cache off
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义用于缓存的共享内存区域,同一个区域可以在多个地方使用。
proxy_cache_key
- 语法: proxy_cache_key string;
- 默认: proxy_cache_key
s
c
h
e
m
e
scheme
schemeproxy_host$request_uri;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义一个用于缓存的键。
proxy_cache_path
- 语法: proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [min_free=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
- 默认: —
- 上下文: http块
- 说明: 设置缓存的路径和其他参数,缓存数据存储在文件中,缓存中的文件名是对缓存键使用MD5函数生成的结果。
proxy_cache_bypass
proxy_no_cache
proxy_cache_valid
proxy_cache_min_uses
- 语法: proxy_cache_min_uses number;
- 默认: proxy_cache_min_uses 1;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置一个请求数,当超过该请求数之后将缓存响应。
proxy_cache_max_range_offset
- 语法: proxy_cache_max_range_offset number;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置字节范围请求的字节偏移量,如果范围超出了偏移量,范围请求将被传递到代理服务器,而响应将不会被缓存。
proxy_cache_use_stale
- 语法: proxy_cache_use_stale error|timeout|invalid_header|updating|http_500|http_502|http_503|http_504|http_403|http_404|http_429|off …;
- 默认: proxy_cache_use_stale off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 确定在何种情况下可以在与代理服务器通信时使用过时的缓存响应,该指令的形参与proxy_next_upstream指令的形参匹配。此外,如果当前正在更新缓存响应,则更新参数允许使用过时的响应,这允许在更新缓存数据时最小化对代理服务器的访问数量。也可以在响应失效后在响应头中直接启用过期缓存响应,这比使用指令参数具有更低的优先级。"Cache-Control"报头字段的"stale-while-revalidate"扩展允许在当前正在更新的情况下使用陈旧的缓存响应,"Cache-Control"报头字段的"stale-if-error"扩展允许在出现错误时使用陈旧的缓存响应。当填充一个新的缓存元素时,为了最小化对代理服务器的访问次数,可以使用proxy_cache_lock指令。
proxy_cache_methods
- 语法: proxy_cache_methods GET|HEAD|POST [GET|HEAD|POST …];
- 默认: proxy_cache_methods GET HEAD;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 如果此指令中列出了客户端请求方法,则响应将被缓存。GET和HEAD方法始终添加到列表中,但建议明确指定它们。
proxy_cache_lock
- 语法: proxy_cache_lock on|off;
- 默认: proxy_cache_lock off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当启用时,一次只允许一个请求填充一个新的缓存元素,根据proxy_cache_key指令,通过传递一个请求到代理服务器。对同一个缓存元素的其它请求要么等待响应出现在缓存中,要么等待释放这个元素的缓存锁,直到proxy_cache_lock_timeout指令设置的时间到达。
proxy_cache_lock_timeout
- 语法: proxy_cache_lock_timeout time;
- 默认: proxy_cache_lock_timeout 5s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为proxy_cache_lock设置超时,当time过期时,请求将被传递到代理服务器,但是响应将不会被缓存。
proxy_cache_lock_age
- 语法: proxy_cache_lock_age time;
- 默认: proxy_cache_lock_age 5s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 如果上次传递给代理服务器用于填充新缓存元素的请求在指定的时间内没有完成,那么可能会再传递一个请求给代理服务器。
proxy_cache_revalidate
- 语法: proxy_cache_revalidate on|off;
- 默认: proxy_cache_revalidate off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许使用带有"If-Modified-Since"和"If-None-Match"头字段的条件请求重新验证过期的缓存项。
proxy_cache_convert_head
- 语法: proxy_cache_convert_head on|off;
- 默认: proxy_cache_convert_head on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用"HEAD"方法到"GET"方法的缓存转换。当转换被禁用时,缓存键应该被配置为包含 $request_method 。
proxy_cache_background_update
- 语法: proxy_cache_background_update on|off;
- 默认: proxy_cache_background_update off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许启动后台子请求来更新过期的缓存项,同时将过期的缓存响应返回给客户端。注意,有必要允许在更新时使用陈旧的缓存响应。
proxy_temp_path
proxy_max_temp_file_size
- 语法: proxy_max_temp_file_size size;
- 参数说明:
size – 为0时表示禁止使用临时文件来缓冲响应信息 - 默认: proxy_max_temp_file_size 1024m;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当缓存来自代理服务器的响应是启用的,并且整个响应不适合proxy_buffer_size和proxy_buffers指令设置的缓冲区,响应的一部分可以保存到一个临时文件。这个指令设置的就是这个临时文件的最大大小。每次写入临时文件的数据大小由proxy_temp_file_write_size指令设置。
proxy_temp_file_write_size
- 语法: proxy_temp_file_write_size size;
- 默认: proxy_temp_file_write_size 8k|16k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当代理服务器的响应缓存到临时文件时,限制一次写入到临时文件的数据的大小。默认情况下,大小受proxy_buffer_size和proxy_buffers指令设置的两个缓冲区的限制。临时文件的最大大小是由proxy_max_temp_file_size指令设置的。
proxy_next_upstream
- 语法: proxy_next_upstream error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_403|http_404|http_429|non_idempotent|off …;
- 参数说明:
error – 表示与服务器建立连接、向其传递请求或读取响应头时发生错误timeout – 表示与服务器建立连接、向其传递请求或读取响应标头时发生超时invalid_header – 表示服务器返回空或无效的响应http_500 – 表示服务器返回响应码为500的响应http_502 – 表示服务器返回响应码为502的响应http_503 – 表示服务器返回响应码为503的响应http_504 – 表示服务器返回响应码为504的响应http_403 – 表示服务器返回响应码为403的响应http_404 – 表示服务器返回响应码为404的响应http_429 – 表示服务器返回响应码为429的响应non_idempotent – 通常,如果请求已发送到上游服务器,则使用“非幂等”方法( POST, LOCK, PATCH)的请求不会传递到下一个服务器,显式启用该参数允许重试此类请求off – 表示禁止将请求传递到下一个服务器 - 默认: fastcgi_next_upstream error timeout;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定在何种情况下应将请求传递给下一个服务器。
proxy_next_upstream_tries
- 语法: proxy_next_upstream_tries number;
- 默认: proxy_next_upstream_tries 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 限制请求传递到下一个服务器的可能尝试次数,number为0时表示关闭此限制。
proxy_next_upstream_timeout
- 语法: proxy_next_upstream_timeout time;
- 默认: proxy_next_upstream_timeout 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 限制请求传递到下一个服务器的时间,time为0时表示关闭此限制。
proxy_pass_header
- 语法: proxy_pass_header field;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许从代理服务器向客户端传递禁用的报头字段。
proxy_hide_header
- 语法: proxy_hide_header field;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 默认情况下,Nginx不从代理服务器传递拥有头字段"Date"、“Server”、"X-Pad"和"X-Accel-…"的响应到客户端。proxy_hide_header指令设置了其他不会被传递的字段。相反,如果需要允许字段的传递,则可以使用proxy_pass_header指令。
proxy_ignore_headers
- 语法: proxy_ignore_headers field [field …];
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 禁止处理代理服务器的某些响应报头字段,以下字段可以忽略:“X-Accel-Expires”、“X-Accel-Redirect”、“X-Accel-Limit-Rate”、“X-Accel-Buffering”、“X-Accel-Charset”、“Expires”、“Cache-Control”、“Set-Cookie"和"Vary”。如果未禁用,则处理这些报头字段具有以下效果:
- “X-Accel-Expires”、“Expires”、“Cache-Control”、“Set-Cookie”、"Vary"设置响应缓存的参数
- "X-Accel-Redirect"执行到指定URI的内部重定向
- "X-Accel-Limit-Rate"设置传输响应给客户端的速率限制
- "X-Accel-Buffering"启用或禁用响应缓冲
- "X-Accel-Charset"设置响应所需字符集
proxy_http_version
- 语法: proxy_http_version 1.0|1.1;
- 默认: proxy_http_version 1.0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 默认情况下,使用1.0版本。
proxy_ssl_session_reuse
- 语法: proxy_ssl_session_reuse on|off;
- 默认: proxy_ssl_session_reuse on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 确定在使用代理服务器时SSL会话是否可以重用。如果日志中出现错误"SSL3_GET_FINISHED:digest check failed",请尝试禁用会话重用。
proxy_ssl_protocols
- 语法: proxy_ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
- 默认: proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为代理HTTPS服务器的请求启用指定的协议。
proxy_ssl_ciphers
- 语法: proxy_ssl_ciphers ciphers;
- 默认: proxy_ssl_ciphers DEFAULT;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定向代理HTTPS服务器请求时的启用密码,密码以OpenSSL库能够理解的格式指定。可以使用"openssl ciphers"命令查看完整列表。
proxy_ssl_name
- 语法: proxy_ssl_name name;
- 默认: proxy_ssl_name $proxy_host;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许覆盖用于验证代理HTTPS服务器的证书的服务器名,并在与代理HTTPS服务器建立连接时通过SNI传递。默认情况下,使用proxy_pass URL的主机部分。
proxy_ssl_server_name
- 语法: proxy_ssl_server_name on|off;
- 默认: proxy_ssl_server_name off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 在与代理HTTPS服务器建立连接时,启用或禁用通过TLS服务器名指示扩展(SNI, RFC 6066)传递服务器名称。
proxy_ssl_verify
- 语法: proxy_ssl_verify on|off;
- 默认: proxy_ssl_verify off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用对代理HTTPS服务器证书的验证。
proxy_ssl_verify_depth
- 语法: proxy_ssl_verify_depth number;
- 默认: proxy_ssl_verify_depth 1;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置代理HTTPS服务器证书链中的验证深度。
proxy_ssl_trusted_certificate
- 语法: proxy_ssl_trusted_certificate file;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定一个PEM格式的受信任CA证书用于验证代理HTTPS服务器的证书。
proxy_ssl_crl
- 语法: proxy_ssl_crl file;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定一个PEM格式的撤销证书(CRL)用于验证代理HTTPS服务器的证书。
proxy_ssl_certificate
- 语法: proxy_ssl_certificate file;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定一个PEM格式的证书用于验证代理HTTPS服务器的证书。
proxy_ssl_certificate_key
- 语法: proxy_ssl_certificate_key file;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定一个PEM格式的带密钥的证书用于验证代理HTTPS服务器的证书。可以指定值engine:name:id代替文件,它从OpenSSL engine name中加载具有指定id的密钥。
proxy_ssl_password_file
- 语法: proxy_ssl_password_file file;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定一个带有密钥密码短语的文件,其中每个密码短语在单独的行上指定,在加载密钥时依次尝试密码短语。
2.3.33、ngx_http_random_index_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-http_random_index_module
random_index
- 语法: random_index on|off;
- 默认: random_index off;
- 上下文: http块中的location块
- 说明: 该模块处理以字符(’/’)结尾的请求,并在目录中随机选取一个文件作为索引文件。该模块处理比ngx_http_index_module模块之前早。
2.3.34、ngx_http_realip_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-http_realip_module
set_real_ip_from
- 语法: set_real_ip_from address|CIDR|unix:;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义已知可发送正确替换地址的可信地址,如果指定了特殊值unix:,表示所有unix域套接字都是可信的,可信地址也可以使用主机名来指定。
real_ip_header
- 语法: set_real_ip_from field|X-Real-IP|X-Forwarded-For|proxy_protocol;
- 默认: real_ip_header X-Real-IP;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义请求报头字段,其值将用于替换客户端地址,包含可选端口的请求报头字段值也用于替换客户端端口,地址和端口应该根据RFC 3986来指定,proxy_protocol参数将客户端地址更改为来自PROXY协议头的地址,PROXY协议之前必须通过在listen指令中设置proxy_protocol参数来启用。
real_ip_recursive
- 语法: real_ip_recursive on|off;
- 默认: real_ip_recursive off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 如果禁用递归搜索,与其中一个受信任地址匹配的原始客户端地址将被real_ip_header指令定义的请求报头字段中发送的最后一个地址替换;如果启用了递归搜索,与其中一个可信地址匹配的原始客户端地址将被请求报头字段中发送的最后一个非可信地址替换。
2.3.35、ngx_http_referer_module模块
valid_referers
referer_hash_max_size
- 语法: referer_hash_max_size size;
- 默认: referer_hash_max_size 2048;
- 上下文: http块中的server块、http块中的location块
- 说明: 设置有效引用哈希表的最大容量。
referer_hash_bucket_size
- 语法: referer_hash_bucket_size size;
- 默认: referer_hash_bucket_size 64;
- 上下文: http块中的server块、http块中的location块
- 说明: 设置有效引用哈希桶的容量。
2.3.36、ngx_http_rewrite_module模块
rewrite
return
- 语法: return code [text];
????return code URL; ????return URL; - 默认: —
- 上下文: http块中的server块、http块中的server块中的if块、http块中的location块、http块中的location块中的if块
- 说明: 停止处理并将指定的返回code给客户端,非标准响应码444关闭连接而不发送响应头。可以指定重定向URL(对于代码301、302、303、307和308)或响应正文文本(对于其他代码),响应正文文本和重定向URL都可以包含变量。作为一种特殊情况,可以将重定向URL指定为该服务器的本地URI,在这种情况下,完整的重定向URL根据请求方案($scheme)和server_name_in_redirect和port_in_redirect指令形成。另外,一个代码为302的临时重定向URL可以指定为唯一的参数,该参数应以"http://"、"https://“或”$scheme"字符串开头。
break
- 语法: break;
- 默认: —
- 上下文: http块中的server块、http块中的server块中的if块、http块中的location块、http块中的location块中的if块
- 说明: 停止处理当前的ngx_http_rewrite_module指令集。
if
- 语法: if (condition) {…};
- 默认: —
- 上下文: http块中的server块、http块中的location块
- 说明: 计算指定的条件,如果为true,则执行括号内指定的模块指令,请求将在if指令内分配配置,if指令中的配置是从上一个配置级别继承来的。条件可以是以下任何一种:
- 变量名,如果变量的值为空字符串或"0",则为false;
- 使用"=“和”!="运算符将变量与字符串进行比较;
- 使用"~"(区分大小写匹配)和"~*"(不区分大小写匹配)运算符将变量与正则表达式匹配,正则表达式可以包含可供以后在$1…$9变量中重用的捕获,负运算符"!~“和”!~*“也可用,如果正则表达式包含”}“或”;"字符,则整个表达式应该用单引号或双引号括起来;
- 使用"-f"和"!-f"运算符检查文件是否存在;
- 使用"-d"和"!-d"运算符检查目录是否存在;
- 使用"-e"和"!-e"运算符检查文件、目录或符号链接是否存在;
- 使用"-x"和"!-x"运算符检查可执行文件
set
- 语法: set $variable value;
- 默认: —
- 上下文: http块中的server块、http块中的server块中的if块、http块中的location块、http块中的location块中的if块
- 说明: 设置指定变量的值,该值可以包含文本、变量或者它们的组合。
rewrite_log
- 语法: rewrite_log on|off;
- 默认: rewrite_log off;
- 上下文: http块、http块中的server块、http块中的server块中的if块、http块中的location块、http块中的location块中的if块
- 说明: 启用或禁用将ngx_http_rewrite_module模块指令处理结果记录到级别为notice的error_log中。
uninitialized_variable_warn
- 语法: uninitialized_variable_warn on|off;
- 默认: uninitialized_variable_warn on;
- 上下文: http块、http块中的server块、http块中的server块中的if块、http块中的location块、http块中的location块中的if块
- 说明: 控制是否记录有关未初始化变量的警告。
2.3.36、ngx_http_scgi_module模块
scgi_pass
scgi_store
- 语法: scgi_store on|off|string;
- 参数说明:
on – 表示将文件保存到alias或root对应的路径off – 表示禁止保存文件string – 表示显式地设置文件名,文件名可以使用变量来代替 - 默认: scgi_store off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁止将文件保存到磁盘。
scgi_store_access
scgi_request_buffering
- 语法: scgi_request_buffering on|off;
- 默认: scgi_request_buffering on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用客户端请求正文的缓冲。启用缓冲后,在将请求发送到SCGI服务器之前,将从客户端读取整个请求正文。当缓冲被禁用时,请求正文在收到时立即发送到SCGI服务器。在这种情况下,如果Nginx已经开始发送请求正文,则请求无法传递到下一个服务器。
scgi_ignore_client_abort
- 语法: scgi_ignore_client_abort on|off;
- 默认: scgi_ignore_client_abort off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 确定当客户端在不等待响应的情况下关闭连接时,是否应关闭与SCGI服务器的连接。
scgi_bind
scgi_socket_keepalive
- 语法: scgi_socket_keepalive on|off;
- 默认: scgi_socket_keepalive off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为发送到SCGI服务器的连接配置"TCP keepalive"行为。默认情况下,操作系统的设置对套接字有效,如果该指令的值被设置为"on",则该套接字的SO_KEEPALIVE选项将被打开。
scgi_connect_timeout
- 语法: scgi_connect_timeout time;
- 默认: scgi_connect_timeout 60s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义与SCGI服务器建立连接的超时时间。需要注意的是,这个超时时间通常不能超过75秒。
scgi_send_timeout
- 语法: scgi_send_timeout time;
- 默认: scgi_send_timeout 60s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置将请求传输到SCGI服务器的超时时间。这里指的是在两次连续写入操作之间间隔,而不是针对整个请求的传输。如果缓存服务器在此时间内没有收到任何消息,则连接关闭。
scgi_buffer_size
- 语法: scgi_buffer_size size;
- 默认: scgi_buffer_size 4k|8k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置用于读取从SCGI服务器接收的响应的第一部分的缓冲区的大小,这部分通常包含一个小的响应头。默认情况下,缓冲区大小等于一页内存,有可能是4K或8K,具体取决于平台。
scgi_pass_request_headers
- 语法: scgi_pass_request_headers on|off;
- 默认: scgi_pass_request_headers on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指示是否将原始请求的报头字段传递给SCGI服务器。
scgi_pass_request_body
- 语法: scgi_pass_request_body on|off;
- 默认: scgi_pass_request_body on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指示是否将原始请求正文信息传递给SCGI服务器。
scgi_intercept_errors
- 语法: scgi_intercept_errors on|off;
- 默认: scgi_intercept_errors off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 确定是否应该将响应码大于或等于300的SCGI服务器响应传递给客户端,或者拦截并重定向到Nginx以使用error_page指令进行处理。
scgi_read_timeout
- 语法: scgi_read_timeout time;
- 默认: scgi_read_timeout 60s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义从SCGI服务器读取响应的超时时间。这里指的是在两次连续读取操作之间间隔,而不是针对整个响应的传输。如果SCGI服务器在此时间内没有传输任何内容,则连接关闭。
scgi_buffers
- 语法: scgi_buffers number size;
- 默认: scgi_buffers 8 4k|8k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为单个连接设置用于从SCGI服务器读取响应的缓冲区的数量和大小。默认情况下,缓冲区大小等于一页内存,有可能是4K或8K,具体取决于平台。
scgi_busy_buffers_size
- 语法: scgi_busy_buffers_size size;
- 默认: scgi_busy_buffers_size 8k|16k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当启用了对来自SCGI服务器的响应的缓存时,该指令可以限制缓冲区的总大小,可以是正忙于发送到客户端的响应,而响应还没有完全读取。同时,其余的缓冲区可用于读取响应,如果需要,还可以缓冲对临时文件的部分响应。默认情况下,大小受scgi_buffer_size和scgi_buffers两个缓冲区大小的限制。
scgi_force_ranges
- 语法: scgi_force_ranges on|off;
- 默认: scgi_force_ranges off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 无论这些响应中的"Accept-Ranges"字段如何,都为来自SCGI服务器的缓存和未缓存响应启用字节范围支持。
scgi_limit_rate
- 语法: scgi_limit_rate rate;
- 参数说明:
- 默认: scgi_limit_rate 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 限制从SCGI服务器读取响应的速度。该限制是针对每个请求设置的,因此如果Nginx同时打开两个到SCGI服务器的连接,则总体速率将是指定限制的两倍。仅当启用了SCGI服务器的响应缓冲时,此限制才有效。
scgi_cache
- 语法: scgi_cache zone|off;
- 参数说明:
zone – 表示缓存的区域,可以包含变量off – 表示禁用从先前配置级别继承缓存信息 - 默认: scgi_cache off
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义用于缓存的共享内存区域,同一个区域可以在多个地方使用。
scgi_cache_key
- 语法: scgi_cache_key string;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义一个用于缓存的键。
scgi_cache_path
- 语法: scgi_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [min_free=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
- 默认: —
- 上下文: http块
- 说明: 设置缓存的路径和其他参数,缓存数据存储在文件中,缓存中的文件名是对缓存键使用MD5函数生成的结果。
scgi_cache_bypass
scgi_no_cache
scgi_cache_valid
scgi_cache_min_uses
- 语法: scgi_cache_min_uses number;
- 默认: scgi_cache_min_uses 1;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置一个请求数,当超过该请求数之后将缓存响应。
scgi_cache_max_range_offset
- 语法: scgi_cache_max_range_offset number;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置字节范围请求的字节偏移量,如果范围超出了偏移量,范围请求将被传递到SCGI服务器,而响应将不会被缓存。
scgi_cache_use_stale
- 语法: scgi_cache_use_stale error|timeout|invalid_header|updating|http_500|http_503|http_403|http_404|http_429|off …;
- 默认: scgi_cache_use_stale off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 确定在何种情况下可以在与SCGI服务器通信时使用过时的缓存响应,该指令的形参与scgi_next_upstream指令的形参匹配。此外,如果当前正在更新缓存响应,则更新参数允许使用过时的响应,这允许在更新缓存数据时最小化对SCGI服务器的访问数量。也可以在响应失效后在响应头中直接启用过期缓存响应,这比使用指令参数具有更低的优先级。"Cache-Control"报头字段的"stale-while-revalidate"扩展允许在当前正在更新的情况下使用陈旧的缓存响应,"Cache-Control"报头字段的"stale-if-error"扩展允许在出现错误时使用陈旧的缓存响应。当填充一个新的缓存元素时,为了最小化对SCGI服务器的访问次数,可以使用scgi_cache_lock指令。
scgi_cache_methods
- 语法: scgi_cache_methods GET|HEAD|POST [GET|HEAD|POST …];
- 默认: scgi_cache_methods GET HEAD;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 如果此指令中列出了客户端请求方法,则响应将被缓存。GET和HEAD方法始终添加到列表中,但建议明确指定它们。
scgi_cache_lock
- 语法: scgi_cache_lock on|off;
- 默认: scgi_cache_lock off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当启用时,一次只允许一个请求填充一个新的缓存元素,根据scgi_cache_key指令,通过传递一个请求到SCGI服务器。对同一个缓存元素的其它请求要么等待响应出现在缓存中,要么等待释放这个元素的缓存锁,直到scgi_cache_lock_timeout指令设置的时间到达。
scgi_cache_lock_timeout
- 语法: scgi_cache_lock_timeout time;
- 默认: scgi_cache_lock_timeout 5s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为scgi_cache_lock设置超时,当time过期时,请求将被传递到SCGI服务器,但是响应将不会被缓存。
scgi_cache_lock_age
- 语法: scgi_cache_lock_age time;
- 默认: scgi_cache_lock_age 5s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 如果上次传递给SCGI服务器用于填充新缓存元素的请求在指定的时间内没有完成,那么可能会再传递一个请求给SCGI服务器。
scgi_cache_revalidate
- 语法: scgi_cache_revalidate on|off;
- 默认: scgi_cache_revalidate off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许使用带有"If-Modified-Since"和"If-None-Match"头字段的条件请求重新验证过期的缓存项。
scgi_cache_background_update
- 语法: scgi_cache_background_update on|off;
- 默认: scgi_cache_background_update off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许启动后台子请求来更新过期的缓存项,同时将过期的缓存响应返回给客户端。注意,有必要允许在更新时使用陈旧的缓存响应。
scgi_temp_path
scgi_max_temp_file_size
- 语法: scgi_max_temp_file_size size;
- 参数说明:
size – 为0时表示禁止使用临时文件来缓冲响应信息 - 默认: scgi_max_temp_file_size 1024m;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当缓存来自SCGI服务器的响应是启用的,并且整个响应不适合scgi_buffer_size和scgi_buffers指令设置的缓冲区,响应的一部分可以保存到一个临时文件。这个指令设置的就是这个临时文件的最大大小。每次写入临时文件的数据大小由scgi_temp_file_write_size指令设置。
scgi_temp_file_write_size
- 语法: scgi_temp_file_write_size size;
- 默认: scgi_temp_file_write_size 8k|16k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当SCGI服务器的响应缓存到临时文件时,限制一次写入到临时文件的数据的大小。默认情况下,大小受scgi_buffer_size和scgi_buffers指令设置的两个缓冲区的限制。临时文件的最大大小是由scgi_max_temp_file_size指令设置的。
scgi_next_upstream
- 语法: scgi_next_upstream error|timeout|invalid_header|http_500|http_503|http_403|http_404|http_429|non_idempotent|off …;
- 参数说明:
error – 表示与服务器建立连接、向其传递请求或读取响应头时发生错误timeout – 表示与服务器建立连接、向其传递请求或读取响应标头时发生超时invalid_header – 表示服务器返回空或无效的响应http_500 – 表示服务器返回响应码为500的响应http_503 – 表示服务器返回响应码为503的响应http_403 – 表示服务器返回响应码为403的响应http_404 – 表示服务器返回响应码为404的响应http_429 – 表示服务器返回响应码为429的响应non_idempotent – 通常,如果请求已发送到上游服务器,则使用“非幂等”方法( POST, LOCK, PATCH)的请求不会传递到下一个服务器,显式启用该参数允许重试此类请求off – 表示禁止将请求传递到下一个服务器 - 默认: scgi_next_upstream error timeout;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定在何种情况下应将请求传递给下一个服务器。
scgi_next_upstream_tries
- 语法: scgi_next_upstream_tries number;
- 默认: scgi_next_upstream_tries 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 限制请求传递到下一个服务器的可能尝试次数,number为0时表示关闭此限制。
scgi_next_upstream_timeout
- 语法: scgi_next_upstream_timeout time;
- 默认: scgi_next_upstream_timeout 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 限制请求传递到下一个服务器的时间,time为0时表示关闭此限制。
scgi_param
- 语法: scgi_param parameter value [if_not_empty];
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置应该传递给SCGI服务器的参数,该值可以包含文本、变量或者它们的组合,当且仅当当前级别没有定义scgi_param指令时,这些指令从上一个配置级别继承。
scgi_pass_header
- 语法: scgi_pass_header field;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许从SCGI服务器向客户端传递禁用的报头字段。
scgi_hide_header
- 语法: scgi_hide_header field;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 默认情况下,Nginx不从SCGI服务器传递拥有头字段"Status"和"X-Accel-…"的响应到客户端。scgi_hide_header指令设置了其他不会被传递的字段。相反,如果需要允许字段的传递,则可以使用scgi_pass_header指令。
scgi_ignore_headers
- 语法: scgi_ignore_headers field [field …];
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 禁止处理SCGI服务器的某些响应报头字段,以下字段可以忽略:“X-Accel-Expires”、“X-Accel-Redirect”、“X-Accel-Limit-Rate”、“X-Accel-Buffering”、“X-Accel-Charset”、“Expires”、“Cache-Control”、“Set-Cookie"和"Vary”。如果未禁用,则处理这些报头字段具有以下效果:
- “X-Accel-Expires”、“Expires”、“Cache-Control”、“Set-Cookie”、"Vary"设置响应缓存的参数
- "X-Accel-Redirect"执行到指定URI的内部重定向
- "X-Accel-Limit-Rate"设置传输响应给客户端的速率限制
- "X-Accel-Buffering"启用或禁用响应缓冲
- "X-Accel-Charset"设置响应所需字符集
2.3.37、ngx_http_secure_link_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-http_secure_link_module
secure_link
- 语法: secure_link expression;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义一个带有变量的字符串,将从中提取链接的校验和值和生命周期。从字符串中提取的校验和的值与由secure_link_md5指令定义的表达式的MD5值进行比较,如果校验和不同,则将该 $secure_link 变量设置为空字符串;如果校验和相同,则检查链路寿命,如果链接的生命周期有限且时间已过,则将该 $secure_link 变量设置为"0",否则设置为"1"。请求中传递的MD5值以base64url编码。如果链接的生命周期有限,则过期时间设置为自Epoch(Thu, 01 Jan 1970 00:00:00 GMT)以来的秒数,该值在MD5哈后的表达式中指定,并用逗号分隔。请求中传递的到期时间可通过 $secure_link_expires 变量获得,以便在secure_link_md5指令中使用。如果未指定到期时间,则链接具有无限的生命周期。
secure_link_md5
- 语法: secure_link_md5 expression;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义一个表达式,用于计算MD5值并将其与请求中传递的值进行比较。表达式应该包含一个链接(资源)的安全部分和一个秘密成分,如果链接有一个有限的生存期,表达式还应该包含 $secure_link_expires 。为了防止未经授权的访问,该表达式可能包含有关客户端的一些信息,例如其地址和浏览器版本。
secure_link_secret
2.3.38、ngx_http_slice_filter_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-http_slice_filter_module
slice
2.3.39、ngx_http_split_clients_module模块
split_clients
2.3.40、ngx_http_ssi_filter_module模块
ssi
- 语法: ssi on|off;
- 默认: ssi off;
- 上下文: http块、http块中的server块、http块中的location块、http块中的location块中的if块
- 说明: 启用或禁用响应中SSI命令的处理。
ssi_silent_errors
- 语法: ssi_silent_errors on|off;
- 默认: ssi_silent_errors off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用之后,如果在SSI处理过程中发生错误,则禁止"[an error occurred while processing the directive]"字符串的输出。
ssi_ignore_recycled_buffers
- 语法: ssi_ignore_recycled_buffers on|off;
- 默认: ssi_ignore_recycled_buffers off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当设置为on时,阻止Nginx使用回收的缓冲区。
ssi_min_file_chunk
- 语法: ssi_min_file_chunk size;
- 默认: ssi_min_file_chunk 1k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置存储在磁盘上的响应部分的最小大小,从这里开始使用sendfile发送响应。
ssi_value_length
- 语法: ssi_value_length length;
- 默认: ssi_value_length 256;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置SSI命令中参数值的最大长度。
ssi_types
- 语法: ssi_types mime-type [mime-type …];
- 默认: ssi_types text/html;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 除了"text/html"外,还可以处理具有指定MIME类型的响应中的SSI命令,特殊值"*"表示匹配任何MIME类型。
ssi_last_modified
- 语法: ssi_last_modified on|off;
- 默认: ssi_last_modified off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许在SSI处理期间保留原始响应中的"Last-Modified"标头字段,以促进响应缓存。默认情况下,当响应的内容在处理过程中被修改时,报头字段将被删除,并且可能包含独立于原始响应而动态生成的元素或部分。
2.3.41、ngx_http_ssl_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-http_ssl_module
ssl
- 语法: ssl on|off;
- 默认: ssl off;
- 上下文: http块、http块中的server块
- 说明: 该指令在1.15.0后的版本中已过时,应该使用listen指令的ssl参数来代替。
ssl_certificate
- 语法: ssl_certificate file;
- 默认: —
- 上下文: http块、http块中的server块
- 说明: 为给定的虚拟服务器指定PEM格式的证书文件。如果除主证书外还应指定中间证书,则应按以下顺序在同一文件中指定它们:首先是主证书,然后是中间证书。PEM格式的密钥可以放在同一个文件中。可以在参数file中使用变量。
ssl_certificate_key
- 语法: ssl_certificate_key file;
- 默认: —
- 上下文: http块、http块中的server块
- 说明: 为给定的虚拟服务器指定PEM格式的密钥文件。可以指定值engine:name:id,而不是file,它从OpenSSL engine name中加载具有指定id的密钥。可以指定值data:$variable而不是file,该文件不使用中间文件从变量加载密钥,需要注意的是,这种语法的不适当使用可能会带来安全隐患,比如将密钥数据写入错误日志。可以在参数file中使用变量。
ssl_password_file
- 语法: ssl_password_file file;
- 默认: —
- 上下文: http块、http块中的server块
- 说明: 指定一个带有密钥密码短语的文件,其中每个密码短语在单独的行上指定,在加载密钥时依次尝试密码短语。
ssl_dhparam
- 语法: ssl_dhparam file;
- 默认: —
- 上下文: http块、http块中的server块
- 说明: 为DHE密码指定一个带有DH参数的文件,默认情况下,没有设置任何参数,因此不会使用DHE密码。
ssl_ecdh_curve
- 语法: ssl_ecdh_curve curve;
- 默认: ssl_ecdh_curve auto;
- 上下文: http块、http块中的server块
- 说明: 指定ECDHE密码的curve。特殊值auto指示Nginx在使用OpenSSL 1.0.2或更高版本时,或使用旧版本的prime256v1时,使用OpenSSL库中的内置列表。
ssl_protocols
- 语法: ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
- 默认: ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- 上下文: http块、http块中的server块
- 说明: 启用指定的协议。
ssl_ciphers
ssl_buffer_size
- 语法: ssl_buffer_size size;
- 默认: ssl_buffer_size 16k;
- 上下文: http块、http块中的server块
- 说明: 设置用于发送数据的缓冲区的大小,默认情况下,缓冲区大小为16k,这对应于发送大响应时的最小开销,为了最小化到第一个字节的时间,使用较小的值可能是有益的。
ssl_verify_client
- 语法: ssl_verify_client on|off|optional|optional_no_ca;
- 默认: ssl_verify_client off;
- 上下文: http块、http块中的server块
- 说明: 允许验证客户端证书,验证结果存储在 $ssl_client_verify 变量中。参数optional表示请求客户端证书,并验证它是否存在证书。参数optional_no_ca表示请求客户端证书,但不要求它由受信任的CA证书签名,这适用于Nginx外部的服务执行实际证书验证的情况。证书的内容可以通过 $ssl_client_cert 变量访问。
ssl_verify_depth
- 语法: ssl_verify_depth number;
- 默认: ssl_verify_depth 1;
- 上下文: http块、http块中的server块
- 说明: 设置客户端证书链中的验证深度。
ssl_client_certificate
- 语法: ssl_client_certificate file;
- 默认: —
- 上下文: http块、http块中的server块
- 说明: 指定一个PEM格式的受信任CA证书文件,该文件用于在启用ssl_stapling时验证客户端证书和OCSP响应。证书列表将发送给客户端,如果不希望这样,可以使用ssl_trusted_certificate指令。
ssl_trusted_certificate
- 语法: ssl_trusted_certificate file;
- 默认: —
- 上下文: http块、http块中的server块
- 说明: 指定一个PEM格式的受信任CA证书文件,该文件用于在启用ssl_stapling时验证客户端证书和OCSP响应。与ssl_client_certificate设置的证书相反,这些证书的列表不会被发送到客户端。
ssl_prefer_server_ciphers
- 语法: ssl_prefer_server_ciphers on|off;
- 默认: ssl_prefer_server_ciphers off;
- 上下文: http块、http块中的server块
- 说明: 指定在使用SSLv3和TLS协议时,服务器密码应该优先于客户端密码。
ssl_session_cache
- 语法: ssl_session_cache off|none|[builtin[:size]] [shared:name:size];
- 参数说明:
off – 表示严格禁止使用会话缓存,Nginx明确告诉客户端会话不能被重用none – 表示不允许使用会话缓存,Nginx告诉客户端可以重用会话,但实际上并不在缓存中存储会话参数builtin – 表示一个内置于OpenSSL的缓存,仅由一个工作进程使用,缓存大小在会话中指定,如果未给出大小,则等于20480个会话,使用内置缓存可能会导致内存碎片shared – 表示在所有工作进程之间共享的缓存,缓存大小以字节为单位,1M字节可以存储大约4000个会话,每个共享缓存应该有一个任意名称,同名缓存可用于多个虚拟服务器 - 默认: ssl_session_cache none;
- 上下文: http块、http块中的server块
- 说明: 设置存储会话参数的缓存的类型和大小。
ssl_session_tickets
- 语法: ssl_session_tickets on|off;
- 默认: ssl_session_tickets on;
- 上下文: http块、http块中的server块
- 说明: 启用或禁用通过TLS会话票证恢复会话。
ssl_session_ticket_key
ssl_session_timeout
- 语法: ssl_session_timeout time;
- 默认: ssl_session_timeout 5m;
- 上下文: http块、http块中的server块
- 说明: 指定客户端可以重用会话参数的时间。
ssl_crl
- 语法: ssl_crl file;
- 默认: —
- 上下文: http块、http块中的server块
- 说明: 指定一个PEM格式的撤销证书(CRL)用于验证客户端的证书。
ssl_stapling
- 语法: ssl_stapling on|off;
- 默认: ssl_stapling off;
- 上下文: http块、http块中的server块
- 说明: 启用或禁用服务器对OCSP响应的装订。
ssl_stapling_file
- 语法: ssl_stapling_file file;
- 默认: —
- 上下文: http块、http块中的server块
- 说明: 设置此参数后,装订的OCSP响应将从指定的文件获取,而不是查询服务器证书中指定的OCSP响应器。该文件应该是由"openssl ocsp"命令生成的DER格式。
ssl_stapling_responder
- 语法: ssl_stapling_responder url;
- 默认: —
- 上下文: http块、http块中的server块
- 说明: 覆盖"Authority Information Access"证书扩展中指定的OCSP响应器的URL,只支持"http://"OCSP响应器。
ssl_stapling_verify
- 语法: ssl_stapling_verify on|off;
- 默认: ssl_stapling_verify off;
- 上下文: http块、http块中的server块
- 说明: 启用或禁用服务器对OCSP响应的验证。为了验证工作,服务器证书颁发者的证书、根证书和所有中间证书都应该使用ssl_trusted_certificate指令配置为受信任的。
ssl_early_data
- 语法: ssl_early_data on|off;
- 默认: ssl_early_data off;
- 上下文: http块、http块中的server块
- 说明: 启用或禁用TLS 1.3早期数据。
2.3.42、ngx_http_stub_status_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-http_stub_status_module
stub_status
2.3.43、ngx_http_sub_filter_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-http_sub_filter_module
sub_filter
- 语法: sub_filter string replacement;
- 参数说明:
string – 表示要被替换的字符串,可以包含变量replacement – 表示替换后的字符串,可以包含变量 - 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置要替换的字符串和替换字符串,要替换的字符串匹配忽略大小写。可以在相同的配置级别上指定几个sub_filter指令。当且仅当当前级别没有定义sub_filter指令时,这些指令从上一个配置级别继承。
sub_filter_types
- 语法: sub_filter_types mime-type [mime-type …];
- 默认: sub_filter_types text/html;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 除了"text/html"之外,还使用指定的MIME类型在响应中启用字符串替换,特殊值"*"匹配任何MIME类型。
sub_filter_once
- 语法: sub_filter_once on|off;
- 默认: sub_filter_once on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 参数on表示替换第一个,参数off表示替换全部。
sub_filter_last_modified
- 语法: sub_filter_last_modified on|off;
- 默认: sub_filter_last_modified off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许在替换期间保留原始响应中的"Last-Modified"标头字段,以促进响应缓存。默认情况下,当响应的内容在处理过程中被修改时,头字段会被删除。
2.3.44、ngx_http_try_files_module模块
try_files
2.3.45、ngx_http_upstream_module模块
upstream
server
- 语法: server address [parameters];
- 默认: —
- 上下文: http块中的upstream块
- 说明: 定义服务器的地址和其他参数,该地址可以指定为带有可选端口域名或IP地址,也可以指定为"unix:"前缀后指定的UNIX域套接字路径,如果不指定端口,则默认使用80端口。解析为多个IP地址的域名同时定义了多个服务器。可以定义以下参数:
- weight=number:设置服务器的权重,默认为1
- max_conns=number:限制number到代理服务器的最大同时活动连接数,默认值为零,表示没有限制。如果服务器组不驻留在共享内存中,则限制适用于每个工作进程
- max_fails=number:设置在fail_timeout参数设置的持续时间内应该发生的与服务器通信的失败尝试次数,以考虑服务器在fail_timeout参数设置的持续时间内不可用。默认情况下,不成功尝试的次数设置为1,设置为0时表示禁用尝试记帐。被视为不成功的尝试由proxy_next_upstream、fastcgi_next_upstream、uwsgi_next_upstream、scgi_next_upstream、memcached_next_upstream和grpc_next_upstream指令定义。
- fail_timeout=time:该参数表示与服务器通信失败的指定次数发生的时间,认为服务器不可用;服务器将被视为不可用的时间段。默认情况下,该参数设置为10秒
- backup:将服务器标记为备份服务器,当主服务器不可用时,它将传递请求
- down:将服务器标记为永久不可用
- resolve:监控服务器域名对应的IP地址的变化,并自动修改upstream配置而不需要重新启动Nginx,服务器组必须位于共享内存中,为了让这个参数工作,resolver指令必须在http块或相应的upstream块中指定
- route=string:设置服务器路由名称
- service=name:启用解析DNS SRV记录并设置服务名,为了使该参数起作用,必须为服务器指定解析参数并指定不带端口号的主机名
- slow_start=time:设置服务器将其权重从0恢复到标称值的时间,即不正常的服务器变为正常的时间,或服务器在一段时间内被认为不可用后恢复可用的时间,默认值为0,即禁用慢启动
- drain:使服务器进入"draining"模式,在这种模式下,只有绑定到服务器的请求才会被代理到服务器
2.3.46、ngx_http_upstream_hash_module模块
hash
- 语法: hash key [consistent];
- 默认: —
- 上下文: http块中的upstream块
- 说明: 为服务器组指定负载均衡方法,其中客户端-服务器的映射是基于hash key的。key可以包含文本、变量或者它们的组合。需要注意的是,从组中添加或删除服务器可能导致将大多数key重新映射到不同的服务器。该方法与Cache::Memcached Perl库兼容。如果指定了consistent参数,则将使用ketama一致性哈希方法,该方法确保在向组中添加或从组中删除服务器时,只有少数键将被重新映射到不同的服务器,这有助于为缓存服务器实现更高的缓存命中率,该方法兼容Cache::Memcached::Fast Perl库,ketama_points参数设置为160。
2.3.47、ngx_http_upstream_ip_hash_module模块
ip_hash
2.3.48、ngx_http_upstream_keepalive_module模块
keepalive
keepalive_timeout
- 语法: keepalive_timeout time;
- 默认: keepalive_timeout 60s;
- 上下文: http块中的upstream块
- 说明: 设置一个超时时间,在此期间与上游服务器的空闲保持连接将保持打开。
keepalive_requests
- 语法: keepalive_requests number;
- 默认: keepalive_requests 1000;
- 上下文: http块中的upstream块
- 说明: 设置通过一个保持连接可以服务的最大请求数,在达到最大请求数后,连接关闭。为了释放每个连接分配的内存,需要定期关闭连接,因此,使用过高的最大请求数可能会导致过多的内存使用,不建议这样做。
2.3.49、ngx_http_upstream_least_conn_module模块
least_conn
- 语法: least_conn;
- 默认: —
- 上下文: http块中的upstream块
- 说明: 指定组应使用负载均衡方法,将请求传递给活动连接数最少的服务器,并考虑服务器的权重。如果有多个这样的服务器,则使用加权循环平衡方法依次尝试它们。
2.3.50、ngx_http_upstream_random_module模块
random
- 语法: random [two [method]];
- 参数说明:
two – 表示Nginx随机选择两个服务器,然后使用指定的method 选择一个服务器method – 有两种选择:
- 默认是least_conn,它将请求传递给活动连接数最少的服务器
- least_time将请求传递给具有最少平均响应时间和最少活动连接数的服务器
- 默认: —
- 上下文: http块中的upstream块
- 说明: 指定组应使用负载均衡方法,将请求传递给随机选择的服务器,并考虑服务器的权重。
2.3.51、ngx_http_upstream_zone_module模块
zone
- 语法: zone name [size];
- 默认: —
- 上下文: http块中的upstream块
- 说明: 定义共享内存区域的name和size,该区域保持工作进程之间共享的组配置和运行时状态,几个组可能共享同一个区域,在这种情况下,只指定一次size就足够了。
2.3.52、ngx_http_userid_filter_module模块
userid
- 语法: userid on|v1|log|off;
- 参数说明:
on – 表示启用版本2的cookie的设置并记录接收到的cookiev1 – 表示启用版本1的cookie的设置并记录接收到的cookielog – 表示禁用cookie的设置,但允许记录接收到的cookieoff – 表示禁止设置cookie和记录接收到的cookie - 默认: userid off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用设置cookie并记录接收到的cookie。
userid_service
- 语法: userid_service number;
- 默认: userid_service IP address of the server;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 如果标识由多个服务器(服务)发出,每个服务应该被分配自己的编号,以确保客户端标识是唯一的。对于版本1的cookie,默认值为零。对于版本2的cookie,默认值是由服务器IP地址的后4个字节组成的数字。
userid_name
- 语法: userid_name name;
- 默认: userid_name uid;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置cookie的名称。
userid_domain
- 语法: userid_domain name|none;
- 默认: userid_domain none;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义一个设置cookie的字段,参数none表示禁用cookie字段的设置。
userid_path
- 语法: userid_path path;
- 默认: userid_path /;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义设置cookie的路径。
userid_expires
- 语法: userid_expires time|max|off;
- 参数说明:
time – 表示正常设置一个过期时间max – 表示cookie将在"31 Dec 2037 23:55:55 GMT"过期off – 表示cookie将在浏览器会话结束时过期 - 默认: userid_expires off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置浏览器保存cookie的时间。
userid_p3p
- 语法: userid_p3p string|none;
- 默认: userid_p3p none;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置将与cookie一起发送的"P3P"报头字段的值,如果该指令被设置为特殊值none的话,"P3P"字段将不会在响应头中发送。
userid_mark
- 语法: userid_mark letter|digit|=|off;
- 默认: userid_mark off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 如果该参数不为off,则启用cookie标记机制,并设置用作标记的字符。此机制用于添加或更改userid_p3p和/或cookie过期时间,同时保留客户端标识符。标记可以是英文字母表中的任何字母(区分大小写)、数字或"="字符。如果设置了该标记,它将与在cookie中传递的客户端标识符的base64表示中的第一个填充符号进行比较,如果它们不匹配,则使用指定的标记、过期时间和"P3P"标头重新发送cookie。
2.3.53、ngx_http_uwsgi_module模块
uwsgi_pass
uwsgi_modifier1
- 语法: uwsgi_modifier1 number;
- 默认: uwsgi_modifier1 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置uwsgi报文头中modifier1字段的值。
uwsgi_modifier2
- 语法: uwsgi_modifier2 number;
- 默认: uwsgi_modifier2 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置uwsgi报文头中modifier2字段的值。
uwsgi_store
- 语法: uwsgi_store on|off|string;
- 参数说明:
on – 表示将文件保存到alias或root对应的路径off – 表示禁止保存文件string – 表示显式地设置文件名,文件名可以使用变量来代替 - 默认: uwsgi_store off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁止将文件保存到磁盘。
uwsgi_store_access
uwsgi_buffering
- 语法: uwsgi_buffering on|off;
- 默认: uwsgi_buffering on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用客户端请求正文的缓冲。启用缓冲后,Nginx会尽快收到来自uwsgi服务器的响应,并将其保存到uwsgi_buffer_size和uwsgi_buffers指令设置的缓冲区中。如果整个响应无法装入内存,则可以将其中一部分保存到磁盘上的临时文件中,写入临时文件由uwsgi_max_temp_file_size和uwsgi_temp_file_write_size指令控制。当缓存被禁用时,响应将在接收到时立即同步地传递给客户机。Nginx不会尝试从uwsgi服务器读取整个响应。Nginx每次从服务器接收数据的最大大小是由uwsgi_buffer_size指令设置的。缓冲也可以通过在"X-Accel-Buffering"响应头字段中传递"yes"或"no"来启用或禁用,也可以使用uwsgi_ignore_headers指令禁用此功能。
uwsgi_request_buffering
- 语法: uwsgi_request_buffering on|off;
- 默认: uwsgi_request_buffering on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用客户端请求正文的缓冲。启用缓冲后,在将请求发送到uwsgi服务器之前,将从客户端读取整个请求正文。当缓冲被禁用时,请求正文在收到时立即发送到uwsgi服务器。在这种情况下,如果Nginx已经开始发送请求正文,则请求无法传递到下一个服务器。当使用HTTP/1.1分块传输编码发送原始请求正文时,请求正文将被缓冲,而不管该指令的值。
uwsgi_ignore_client_abort
- 语法: uwsgi_ignore_client_abort on|off;
- 默认: uwsgi_ignore_client_abort off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 确定当客户端在不等待响应的情况下关闭连接时,是否应关闭与uwsgi服务器的连接。
uwsgi_bind
uwsgi_socket_keepalive
- 语法: uwsgi_socket_keepalive on|off;
- 默认: uwsgi_socket_keepalive off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为发送到uwsgi服务器的连接配置"TCP keepalive"行为。默认情况下,操作系统的设置对套接字有效,如果该指令的值被设置为"on",则该套接字的SO_KEEPALIVE选项将被打开。
uwsgi_connect_timeout
- 语法: uwsgi_connect_timeout time;
- 默认: uwsgi_connect_timeout 60s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义与uwsgi服务器建立连接的超时时间。需要注意的是,这个超时时间通常不能超过75秒。
uwsgi_send_timeout
- 语法: uwsgi_send_timeout time;
- 默认: uwsgi_send_timeout 60s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置将请求传输到uwsgi服务器的超时时间。这里指的是在两次连续写入操作之间间隔,而不是针对整个请求的传输。如果缓存服务器在此时间内没有收到任何消息,则连接关闭。
uwsgi_buffer_size
- 语法: uwsgi_buffer_size size;
- 默认: uwsgi_buffer_size 4k|8k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置用于读取从uwsgi服务器接收的响应的第一部分的缓冲区的大小,这部分通常包含一个小的响应头。默认情况下,缓冲区大小等于一页内存,有可能是4K或8K,具体取决于平台。
uwsgi_pass_request_headers
- 语法: uwsgi_pass_request_headers on|off;
- 默认: uwsgi_pass_request_headers on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指示是否将原始请求的报头字段传递给uwsgi服务器。
uwsgi_pass_request_body
- 语法: uwsgi_pass_request_body on|off;
- 默认: uwsgi_pass_request_body on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指示是否将原始请求正文信息传递给uwsgi服务器。
uwsgi_intercept_errors
- 语法: uwsgi_intercept_errors on|off;
- 默认: uwsgi_intercept_errors off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 确定是否应该将响应码大于或等于300的uwsgi服务器响应传递给客户端,或者拦截并重定向到Nginx以使用error_page指令进行处理。
uwsgi_read_timeout
- 语法: uwsgi_read_timeout time;
- 默认: uwsgi_read_timeout 60s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义从uwsgi服务器读取响应的超时时间。这里指的是在两次连续读取操作之间间隔,而不是针对整个响应的传输。如果uwsgi服务器在此时间内没有传输任何内容,则连接关闭。
uwsgi_buffers
- 语法: uwsgi_buffers number size;
- 默认: uwsgi_buffers 8 4k|8k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为单个连接设置用于从uwsgi服务器读取响应的缓冲区的数量和大小。默认情况下,缓冲区大小等于一页内存,有可能是4K或8K,具体取决于平台。
uwsgi_busy_buffers_size
- 语法: uwsgi_busy_buffers_size size;
- 默认: uwsgi_busy_buffers_size 8k|16k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当启用了对来自uwsgi服务器的响应的缓存时,该指令可以限制缓冲区的总大小,可以是正忙于发送到客户端的响应,而响应还没有完全读取。同时,其余的缓冲区可用于读取响应,如果需要,还可以缓冲对临时文件的部分响应。默认情况下,大小受uwsgi_buffer_size和uwsgi_buffers两个缓冲区大小的限制。
uwsgi_force_ranges
- 语法: uwsgi_force_ranges on|off;
- 默认: uwsgi_force_ranges off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 无论这些响应中的"Accept-Ranges"字段如何,都为来自uwsgi服务器的缓存和未缓存响应启用字节范围支持。
uwsgi_limit_rate
- 语法: uwsgi_limit_rate rate;
- 参数说明:
- 默认: uwsgi_limit_rate 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 限制从uwsgi服务器读取响应的速度。该限制是针对每个请求设置的,因此如果Nginx同时打开两个到uwsgi服务器的连接,则总体速率将是指定限制的两倍。仅当启用了uwsgi服务器的响应缓冲时,此限制才有效。
uwsgi_cache
- 语法: uwsgi_cache zone|off;
- 参数说明:
zone – 可以包含变量,表示缓存的区域off – 表示禁用从先前配置级别继承缓存信息 - 默认: uwsgi_cache off
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义用于缓存的共享内存区域,同一个区域可以在多个地方使用。
uwsgi_cache_key
- 语法: uwsgi_cache_key string;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义一个用于缓存的键。
uwsgi_cache_path
- 语法: uwsgi_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [min_free=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
- 默认: —
- 上下文: http块
- 说明: 设置缓存的路径和其他参数,缓存数据存储在文件中,缓存中的文件名是对缓存键使用MD5函数生成的结果。
uwsgi_cache_bypass
uwsgi_no_cache
uwsgi_cache_valid
uwsgi_cache_min_uses
- 语法: uwsgi_cache_min_uses number;
- 默认: uwsgi_cache_min_uses 1;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置一个请求数,当超过该请求数之后将缓存响应。
uwsgi_cache_max_range_offset
- 语法: uwsgi_cache_max_range_offset number;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置字节范围请求的字节偏移量,如果范围超出了偏移量,范围请求将被传递到uwsgi服务器,而响应将不会被缓存。
uwsgi_cache_use_stale
- 语法: uwsgi_cache_use_stale error|timeout|invalid_header|updating|http_500|http_503|http_403|http_404|http_429|off …;
- 默认: uwsgi_cache_use_stale off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 确定在何种情况下可以在与uwsgi服务器通信时使用过时的缓存响应,该指令的形参与uwsgi_next_upstream指令的形参匹配。此外,如果当前正在更新缓存响应,则更新参数允许使用过时的响应,这允许在更新缓存数据时最小化对uwsgi服务器的访问数量。也可以在响应失效后在响应头中直接启用过期缓存响应,这比使用指令参数具有更低的优先级。"Cache-Control"报头字段的"stale-while-revalidate"扩展允许在当前正在更新的情况下使用陈旧的缓存响应,"Cache-Control"报头字段的"stale-if-error"扩展允许在出现错误时使用陈旧的缓存响应。当填充一个新的缓存元素时,为了最小化对uwsgi服务器的访问次数,可以使用uwsgi_cache_lock指令。
uwsgi_cache_methods
- 语法: uwsgi_cache_methods GET|HEAD|POST [GET|HEAD|POST …];
- 默认: uwsgi_cache_methods GET HEAD;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 如果此指令中列出了客户端请求方法,则响应将被缓存。GET和HEAD方法始终添加到列表中,但建议明确指定它们。
uwsgi_cache_lock
- 语法: uwsgi_cache_lock on|off;
- 默认: uwsgi_cache_lock off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当启用时,一次只允许一个请求填充一个新的缓存元素,根据uwsgi_cache_key指令,通过传递一个请求到uwsgi服务器。对同一个缓存元素的其它请求要么等待响应出现在缓存中,要么等待释放这个元素的缓存锁,直到uwsgi_cache_lock_timeout指令设置的时间到达。
uwsgi_cache_lock_timeout
- 语法: uwsgi_cache_lock_timeout time;
- 默认: uwsgi_cache_lock_timeout 5s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为uwsgi_cache_lock设置超时,当time过期时,请求将被传递到uwsgi服务器,但是响应将不会被缓存。
uwsgi_cache_lock_age
- 语法: uwsgi_cache_lock_age time;
- 默认: uwsgi_cache_lock_age 5s;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 如果上次传递给uwsgi服务器用于填充新缓存元素的请求在指定的时间内没有完成,那么可能会再传递一个请求给uwsgi服务器。
uwsgi_cache_revalidate
- 语法: uwsgi_cache_revalidate on|off;
- 默认: uwsgi_cache_revalidate off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许使用带有"If-Modified-Since"和"If-None-Match"头字段的条件请求重新验证过期的缓存项。
uwsgi_cache_background_update
- 语法: uwsgi_cache_background_update on|off;
- 默认: uwsgi_cache_background_update off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许启动后台子请求来更新过期的缓存项,同时将过期的缓存响应返回给客户端。注意,有必要允许在更新时使用陈旧的缓存响应。
uwsgi_temp_path
uwsgi_max_temp_file_size
- 语法: uwsgi_max_temp_file_size size;
- 参数说明:
size – 为0时表示禁止使用临时文件来缓冲响应信息 - 默认: uwsgi_max_temp_file_size 1024m;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当缓存来自uwsgi服务器的响应是启用的,并且整个响应不适合uwsgi_buffer_size和uwsgi_buffers指令设置的缓冲区,响应的一部分可以保存到一个临时文件。这个指令设置的就是这个临时文件的最大大小。每次写入临时文件的数据大小由uwsgi_temp_file_write_size指令设置。
uwsgi_temp_file_write_size
- 语法: uwsgi_temp_file_write_size size;
- 默认: uwsgi_temp_file_write_size 8k|16k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 当uwsgi服务器的响应缓存到临时文件时,限制一次写入到临时文件的数据的大小。默认情况下,大小受uwsgi_buffer_size和uwsgi_buffers指令设置的两个缓冲区的限制。临时文件的最大大小是由uwsgi_max_temp_file_size指令设置的。
uwsgi_next_upstream
- 语法: uwsgi_next_upstream error|timeout|invalid_header|http_500|http_503|http_403|http_404|http_429|non_idempotent|off …;
- 参数说明:
error – 表示与服务器建立连接、向其传递请求或读取响应头时发生错误timeout – 表示与服务器建立连接、向其传递请求或读取响应标头时发生超时invalid_header – 表示服务器返回空或无效的响应http_500 – 表示服务器返回响应码为500的响应http_503 – 表示服务器返回响应码为503的响应http_403 – 表示服务器返回响应码为403的响应http_404 – 表示服务器返回响应码为404的响应http_429 – 表示服务器返回响应码为429的响应non_idempotent – 通常,如果请求已发送到上游服务器,则使用“非幂等”方法(POST, LOCK, PATCH)的请求不会传递到下一个服务器,显式启用该参数允许重试此类请求off – 表示禁止将请求传递到下一个服务器 - 默认: uwsgi_next_upstream error timeout;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定在何种情况下应将请求传递给下一个服务器。
uwsgi_next_upstream_tries
- 语法: uwsgi_next_upstream_tries number;
- 默认: uwsgi_next_upstream_tries 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 限制请求传递到下一个服务器的可能尝试次数,number为0时表示关闭此限制。
uwsgi_next_upstream_timeout
- 语法: uwsgi_next_upstream_timeout time;
- 默认: uwsgi_next_upstream_timeout 0;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 限制请求传递到下一个服务器的时间,time为0时表示关闭此限制。
uwsgi_param
- 语法: uwsgi_param parameter value [if_not_empty];
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置应该传递给uwsgi服务器的参数,该值可以包含文本、变量或者它们的组合,当且仅当当前级别没有定义uwsgi_param指令时,这些指令从上一个配置级别继承。
uwsgi_string
- 语法: uwsgi_string string;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为一个uwsgi请求增加一个字符串。
uwsgi_pass_header
- 语法: uwsgi_pass_header field;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许从uwsgi服务器向客户端传递禁用的报头字段。
uwsgi_hide_header
- 语法: uwsgi_hide_header field;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 默认情况下,Nginx不从uwsgi服务器传递拥有头字段"Status"和"X-Accel-…"的响应到客户端。uwsgi_hide_header指令设置了其他不会被传递的字段。相反,如果需要允许字段的传递,则可以使用uwsgi_pass_header指令。
uwsgi_ignore_headers
- 语法: uwsgi_ignore_headers field [field …];
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 禁止处理SCGI服务器的某些响应报头字段,以下字段可以忽略:“X-Accel-Expires”、“X-Accel-Redirect”、“X-Accel-Limit-Rate”、“X-Accel-Buffering”、“X-Accel-Charset”、“Expires”、“Cache-Control”、“Set-Cookie"和"Vary”。如果未禁用,则处理这些报头字段具有以下效果:
- “X-Accel-Expires”、“Expires”、“Cache-Control”、“Set-Cookie”、"Vary"设置响应缓存的参数;
- "X-Accel-Redirect"执行到指定URI的内部重定向;
- "X-Accel-Limit-Rate"设置传输响应给客户端的速率限制;
- "X-Accel-Buffering"启用或禁用响应缓冲;
- "X-Accel-Charset"设置响应所需字符集。
uwsgi_ssl_session_reuse
- 语法: uwsgi_ssl_session_reuse on|off;
- 默认: uwsgi_ssl_session_reuse on;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 确定在使用uwsgi服务器时SSL会话是否可以重用。如果日志中出现错误"SSL3_GET_FINISHED:digest check failed",请尝试禁用会话重用。
uwsgi_ssl_protocols
- 语法: uwsgi_ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
- 默认: uwsgi_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 为安全的uwsgi服务器的请求启用指定的协议。
uwsgi_ssl_ciphers
- 语法: uwsgi_ssl_ciphers ciphers;
- 默认: uwsgi_ssl_ciphers DEFAULT;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定向安全的uwsgi服务器请求时的启用密码,密码以OpenSSL库能够理解的格式指定。可以使用"openssl ciphers"命令查看完整列表。
uwsgi_ssl_name
- 语法: uwsgi_ssl_name name;
- 默认: uwsgi_ssl_name host from uwsgi_pass;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许覆盖用于验证安全的uwsgi服务器的证书的服务器名,并在与安全的uwsgi服务器建立连接时通过SNI传递。默认情况下,使用uwsgi_pass的主机部分。
uwsgi_ssl_server_name
- 语法: uwsgi_ssl_server_name on|off;
- 默认: uwsgi_ssl_server_name off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 在与安全的uwsgi服务器建立连接时,启用或禁用通过TLS服务器名指示扩展(SNI, RFC 6066)传递服务器名称。
uwsgi_ssl_verify
- 语法: uwsgi_ssl_verify on|off;
- 默认: uwsgi_ssl_verify off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 启用或禁用对安全的uwsgi服务器证书的验证。
uwsgi_ssl_verify_depth
- 语法: uwsgi_ssl_verify_depth number;
- 默认: uwsgi_ssl_verify_depth 1;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置安全的uwsgi服务器证书链中的验证深度。
uwsgi_ssl_trusted_certificate
- 语法: uwsgi_ssl_trusted_certificate file;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定一个PEM格式的受信任CA证书用于验证安全的uwsgi服务器的证书。
uwsgi_ssl_crl
- 语法: uwsgi_ssl_crl file;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定一个PEM格式的撤销证书(CRL)用于验证安全的uwsgi服务器的证书。
uwsgi_ssl_certificate
- 语法: uwsgi_ssl_certificate file;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定一个PEM格式的证书用于验证安全的uwsgi服务器的证书。
uwsgi_ssl_certificate_key
- 语法: uwsgi_ssl_certificate_key file;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定一个PEM格式的带密钥的证书用于验证安全的uwsgi服务器的证书。可以指定值engine:name:id代替文件,它从OpenSSL engine name中加载具有指定id的密钥。
uwsgi_ssl_password_file
- 语法: uwsgi_ssl_password_file file;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定一个带有密钥密码短语的文件,其中每个密码短语在单独的行上指定,在加载密钥时依次尝试密码短语。
2.3.54、ngx_http_v2_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-http_v2_module
http2_recv_buffer_size
- 语法: http2_recv_buffer_size size;
- 默认: http2_recv_buffer_size 256k;
- 上下文: http块
- 说明: 设置每个工作进程输入缓冲区的大小。
http2_pool_size
- 语法: http2_pool_size file;
- 默认: http2_pool_size 4096;
- 上下文: http块、http块中的server块
- 说明: 设置线程池大小。
http2_max_concurrent_streams
- 语法: http2_max_concurrent_streams number;
- 默认: http2_max_concurrent_streams 128;
- 上下文: http块、http块中的server块
- 说明: 设置连接中并发HTTP/2流的最大数目。
http2_max_concurrent_pushes
- 语法: http2_max_concurrent_pushes number;
- 默认: http2_max_concurrent_pushes 10;
- 上下文: http块、http块中的server块
- 说明: 限制连接中并发推送请求的最大数量。
http2_max_requests
- 语法: http2_max_requests number;
- 默认: http2_max_requests 1000;
- 上下文: http块、http块中的server块
- 说明: 设置通过一个HTTP/2连接可以服务的最大请求数(包括推送请求),在此之后,下一个客户端请求将导致连接关闭,并需要建立一个新的连接。为了释放每个连接分配的内存,需要定期关闭连接。因此,使用过高的最大请求数可能会导致过多的内存使用,不建议这样做。
http2_max_field_size
- 语法: http2_max_field_size size;
- 默认: http2_max_field_size 4k;
- 上下文: http块、http块中的server块
- 说明: 限制HPACK压缩的请求标头字段的最大大小,该限制同样适用于名称和值。需要注意的是,如果应用Huffman编码,则解压缩的名称和值字符串的实际大小可能会更大。对于大多数请求,默认限制应该足够了。
http2_max_header_size
- 语法: http2_max_header_size size;
- 默认: http2_max_header_size 16k;
- 上下文: http块、http块中的server块
- 说明: 限制HPACK解压后整个请求头列表的最大大小 。对于大多数请求,默认限制应该足够了。
http2_body_preread_size
- 语法: http2_body_preread_size size;
- 默认: http2_body_preread_size 64k;
- 上下文: http块、http块中的server块
- 说明: 设置每个请求的缓冲区大小,在开始处理请求之前,请求正文可能保存在其中。
http2_streams_index_size
- 语法: http2_streams_index_size size;
- 默认: http2_streams_index_size 31;
- 上下文: http块、http块中的server块
- 说明: 把所有的stream放到一个简易的hash数组中,hash数组的大小为size+1,冲突处理的方法为链地址法。
http2_recv_timeout
- 语法: http2_recv_timeout time;
- 默认: http2_recv_timeout 30s;
- 上下文: http块、http块中的server块
- 说明: 设置等待来自客户端的更多数据的超时时间,之后连接关闭。
http2_idle_timeout
- 语法: http2_idle_timeout time;
- 默认: http2_idle_timeout 3m;
- 上下文: http块、http块中的server块
- 说明: 设置不活动的超时时间,之后连接关闭。
http2_chunk_size
- 语法: http2_chunk_size size;
- 默认: http2_chunk_size 8k;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 设置响应正文切片的块的最大大小。值过低会导致更高的开销,由于HOL阻塞,过高的值会损害优先级。
http2_push_preload
- 语法: http2_push_preload on|off;
- 默认: http2_push_preload off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许自动将"Link"响应头字段中指定的预加载链接转换为推送请求。
http2_push
- 语法: http2_push uri|off;
- 默认: http2_push off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 预先向指定对象发送(推送)请求uri以及对原始请求的响应,只会处理具有绝对路径的相对uri,例如:http2_push /static/css/main.css; 该uri值可以包含变量,http2_push可以在同一配置级别上指定多个指令,参数off取消了http2_push从先前配置级别继承的指令的效果。
2.3.55、ngx_http_xslt_filter_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-http_xslt_filter_module 该模块需要libxml2库和libxslt库的支持
xml_entities
- 语法: xml_entities path;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 指定声明字符实体的DTD文件,该文件在配置阶段编译。由于技术原因,模块无法使用在处理过的XML中声明的外部子集,因此它被忽略并使用专门定义的文件代替。该文件不应描述XML结构,仅声明所需的字符实体就足够了,例如:<!ENTITY nbsp "?">。
xslt_stylesheet
xslt_param
- 语法: xslt_param parameter value;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义XSLT样式表的参数,参数value被视为一个XPath表达式,value可以包含变量。要将字符串值传递给样式表,可以使用xslt_string_param指令。可以有多个xslt_param指令,当且仅当当前级别上没有定义xslt_param和xslt_string_param指令时,这些指令才从先前的配置级别继承。
xslt_string_param
- 语法: xslt_string_param parameter value;
- 默认: —
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 定义XSLT样式表的字符串参数,参数value中的XPath表达式不被解释,value可以包含变量。可以有多个xslt_string_param指令,当且仅当当前级别上没有定义xslt_param和xslt_string_param指令时,这些指令将从前一个配置级别继承。
xslt_types
- 语法: xslt_types mime-type [mime-type …];
- 默认: xslt_types text/xml;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 除了"text/html"之外,还支持在响应中使用指定的MIME类型进行转换,特殊值"*“匹配任何MIME类型。如果转换结果是HTML响应,则其MIME类型被更改为"text/html”。
xslt_last_modified
- 语法: xslt_last_modified on|off;
- 默认: xslt_last_modified off;
- 上下文: http块、http块中的server块、http块中的location块
- 说明: 允许在XSLT转换期间保留来自原始响应的"Last-Modified"报头字段,以方便响应缓存。默认情况下,当响应的内容在转换期间被修改时,报头字段会被删除,并且可能包含独立于原始响应而动态生成的元素或部分。
2.4、位于mail块的配置指令
要使用mail模块相关内容需要在构建Nginx时加上配置选项: –with-mail
2.4.1、ngx_mail_auth_http_module模块
auth_http
- 语法: auth_http URL;
- 默认: —
- 上下文: mail块、mail块中的server块
- 说明: 设置HTTP认证服务器的URL。
auth_http_timeout
- 语法: auth_http_timeout time;
- 默认: auth_http_timeout 60s;
- 上下文: mail块、mail块中的server块
- 说明: 设置与身份验证服务器通信的超时时间。
auth_http_header
auth_http_pass_client_cert
- 语法: auth_http_pass_client_cert on|off;
- 默认: auth_http_pass_client_cert off;
- 上下文: mail块、mail块中的server块
- 说明: 将带有PEM格式的客户端证书的"Auth-SSL-Cert"标头附加到发送到身份验证服务器的请求中。
2.4.2、ngx_mail_core_module模块
server
- 语法: server {…};
- 默认: auth_http_pass_client_cert off;
- 上下文: mail块
- 说明: 设置一个属于mail块的server块。
listen
protocol
-
语法: protocol imap|pop3|smtp; -
默认: — -
上下文: mail块中的server块 -
说明: 设置代理服务器的协议,支持的协议有IMAP、POP3和SMTP。如果未设置该指令,则可以根据listen指令中指定的已知端口自动检测协议:
- imap: 143, 993
- pop3: 110, 995
- smtp: 25, 587, 465
不需要的协议可以使用配置参数–without-mail_imap_module、–without-mail_pop3_module以及–without-mail_smtp_module来禁止使用它们。
timeout
- 语法: timeout time;
- 默认: timeout 60s;
- 上下文: mail块、mail块中的server块
- 说明: 设置代理到后端启动之前使用的超时时间。
server_name
- 语法: server_name name;
- 默认: server_name hostname;
- 上下文: mail块、mail块中的server块
- 说明: 设置使用的服务器名称,如果没有指定该指令,则使用机器的主机名。
error_log
- 语法: error_log file [level];
- 参数说明:
file – 表示存储日志的文件,特殊值stderr表示选择标准错误文件,可以通过指定"syslog:"前缀来配置日志到syslog,可以通过指定"memory:"前缀和缓冲区大小来配置到循环内存缓冲区的日志记录level – 表示日志记录的级别,可以是以下级别之一:debug、info、notice、warn、error、crit、alert或emerg。以上的日志级别是按严重性递增的顺序列出的,设置某个日志级别将导致记录指定的和更严重的日志级别的所有消息,如果省略此参数,则默认使用error级别记录日志 - 默认: error_log logs/error.log error;
- 上下文: mail块、mail块中的server块
- 说明: 配置日志记录,可以在同一配置级别上指定多个日志,如果在全局配置级别上未明确定义将日志写入文件,则将使用默认文件。如果要打印DEBUG级别的日志,需在构建Nginx时加上配置选项: –with-debug。
resolver
resolver_timeout
- 语法: resolver_timeout time;
- 默认: resolver_timeout 30s;
- 上下文: mail块、mail块中的server块
- 说明: 设置DNS操作的超时时间。
2.4.3、ngx_mail_imap_module模块
imap_client_buffer
- 语法: imap_client_buffer size;
- 默认: imap_client_buffer 4k|8k;
- 上下文: mail块、mail块中的server块
- 说明: 设置用于读取IMAP命令的缓冲区大小。默认情况下,缓冲区大小等于一页内存,有可能是4K或8K,具体取决于平台。
imap_capabilities
- 语法: imap_capabilities extension [extension …];
- 默认: imap_capabilities IMAP4 IMAP4rev1 UIDPLUS;
- 上下文: mail块、mail块中的server块
- 说明: 设置响应CAPABILITY命令传递给客户端的IMAP协议扩展列表,imap_auth指令和STARTTLS中指定的身份验证方法会根据STARTTLS指令的值自动添加到这个列表中。
imap_auth
-
语法: imap_auth method [method …]; -
默认: imap_auth plain; -
上下文: mail块、mail块中的server块 -
说明: 为IMAP客户端设置允许的身份验证方法,支持的方法有:
- plain:LOGIN,AUTH=PLAIN
- login:AUTH=LOGIN
- cram-md5:AUTH=CRAM-MD5,为了使此方法起作用,密码必须以未加密方式存储
- external:AUTH=EXTERNAL
纯文本身份验证方法(LOGIN命令,AUTH=Plain和AUTH=LOGIN)总是启用,但是如果没有指定纯文本和登录方法,AUTH= Plain和AUTH=LOGIN将不会自动包含在imap_capabilities中。
2.4.4、ngx_mail_pop3_module模块
pop3_capabilities
- 语法: pop3_capabilities extension [extension …];
- 默认: pop3_capabilities TOP USER UIDL;
- 上下文: mail块、mail块中的server块
- 说明: 设置响应CAPA命令传递给客户端的POP3协议扩展列表,pop3_auth指令(SASL扩展)和STLS中指定的身份验证方法会根据starttls指令的值自动添加到这个列表中。
pop3_auth
-
语法: pop3_auth method [method …]; -
默认: pop3_auth plain; -
上下文: mail块、mail块中的server块 -
说明: 为POP3客户端设置允许的身份验证方法,支持的方法有:
- plain:USER/PASS,AUTH PLAIN,AUTH LOGIN
- apop:APOP,为了使此方法起作用,密码必须以未加密方式存储
- cram-md5:AUTH CRAM-MD5,为了使此方法起作用,密码必须以未加密方式存储
- external:AUTH EXTERNAL
纯文本身份验证方法(USER/PASS,AUTH Plain,和AUTH LOGIN)总是启用,但是如果没有指定纯文本方法,AUTH Plain和AUTH LOGIN将不会自动包含在pop3_capabilities中。
2.4.5、ngx_mail_proxy_module模块
proxy
- 语法: proxy on|off;
- 默认: proxy off;
- 上下文: mail块、mail块中的server块
- 说明: 启用或禁用代理MAIL服务器。
proxy_buffer
- 语法: proxy_buffer size;
- 默认: proxy_buffer 4k|8k;
- 上下文: mail块、mail块中的server块
- 说明: 设置用于代理的缓冲区的大小。默认情况下,缓冲区大小等于一页内存,有可能是4K或8K,具体取决于平台。
proxy_timeout
- 语法: proxy_timeout time;
- 默认: proxy_timeout 24h;
- 上下文: mail块、mail块中的server块
- 说明: 设置客户机或代理服务器连续的两个读或写操作之间的超时时间。如果在此时间内没有传输数据,连接将关闭。
proxy_pass_error_message
- 语法: proxy_pass_error_message on|off;
- 默认: proxy_pass_error_message off;
- 上下文: mail块、mail块中的server块
- 说明: 是否将后端认证时获取的错误消息传递给客户端。通常,如果Nginx中的身份验证是成功的,后端就不能返回一个错误,如果它仍然返回一个错误,则意味着发生了一些内部错误,在这种情况下,后端消息可能包含不应该显示给客户机的信息。但是,对于某些POP3服务器来说,使用正确密码的错误进行响应是一种正常行为。例如,CommuniGatePro通过定期输出身份验证错误来通知用户邮箱溢出或其他事件。在这种情况下,应该启用该指令。
xclient
- 语法: xclient on|off;
- 默认: xclient on;
- 上下文: mail块、mail块中的server块
- 说明: 启用或禁用在连接到SMTP后端时传递带有客户端参数的XCLIENT命令。使用XCLIENT,MTA能够将客户端信息写入日志并基于此数据应用各种限制。
2.4.6、ngx_mail_smtp_module模块
smtp_client_buffer
- 语法: smtp_client_buffer size;
- 默认: smtp_client_buffer 4k|8k;
- 上下文: mail块、mail块中的server块
- 说明: 设置用于读取SMTP命令的缓冲区的大小。默认情况下,缓冲区大小等于一页内存,有可能是4K或8K,具体取决于平台。
smtp_greeting_delay
- 语法: smtp_greeting_delay time;
- 默认: smtp_greeting_delay 0;
- 上下文: mail块、mail块中的server块
- 说明: 允许在发送SMTP问候语之前设置延迟,以拒绝在发送SMTP命令之前未能等待问候语的客户端。
smtp_capabilities
- 语法: smtp_capabilities extension [extension …];
- 默认: —
- 上下文: mail块、mail块中的server块
- 说明: 设置响应EHLO命令传递给客户端的SMTP协议扩展列表,smtp_auth指令和STARTTLS中指定的身份验证方法会根据STARTTLS指令的值自动添加到这个列表中。
smtp_auth
-
语法: smtp_auth method [method …]; -
默认: smtp_auth plain login; -
上下文: mail块、mail块中的server块 -
说明: 为SMTP客户端设置允许的SASL身份验证方法,支持的方法有:
- plain:AUTH PLAIN
- login:AUTH LOGIN
- cram-md5:AUTH CRAM-MD5,为了使此方法起作用,密码必须以未加密方式存储
- external:AUTH EXTERNAL
- none:不需要身份验证
纯文本身份验证方法(AUTH Plain和AUTH LOGIN)始终是启用的,但是如果没有指定纯文本和登录方法,AUTH Plain和AUTH LOGIN将不会自动包含在smtp_capabilities中。
2.4.7、ngx_mail_ssl_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-mail_ssl_module
ssl
- 语法: ssl on|off;
- 默认: ssl off;
- 上下文: mail块、mail块中的server块
- 说明: 该指令在1.15.0后的版本中已过时,应该使用listen指令的ssl参数来代替。
starttls
- 语法: starttls on|off|only;
- 参数说明:
on – 表示允许对POP3使用STLS命令,对IMAP和SMTP使用STARTTLS命令off – 表示拒绝使用STLS和STARTTLS命令only – 表示需要初始TLS转换 - 默认: starttls off;
- 上下文: mail块、mail块中的server块
- 说明: 明文通信协议的扩展。
ssl_certificate
- 语法: ssl_certificate file;
- 默认: —
- 上下文: mail块、mail块中的server块
- 说明: 为给定的服务器指定PEM格式的证书文件。如果除主证书外还应指定中间证书,则应按以下顺序在同一文件中指定它们:首先是主证书,然后是中间证书。PEM格式的密钥可以放在同一个文件中。可以在参数file中使用变量。
ssl_certificate_key
- 语法: ssl_certificate_key file;
- 默认: —
- 上下文: mail块、mail块中的server块
- 说明: 为给定的服务器指定PEM格式的密钥文件。可以指定值engine:name:id,而不是file,它从OpenSSL engine name中加载具有指定id的密钥。可以指定值data:$variable而不是file,该文件不使用中间文件从变量加载密钥,需要注意的是,这种语法的不适当使用可能会带来安全隐患,比如将密钥数据写入错误日志。可以在参数file中使用变量。
ssl_password_file
- 语法: ssl_password_file file;
- 默认: —
- 上下文: mail块、mail块中的server块
- 说明: 指定一个带有密钥密码短语的文件,其中每个密码短语在单独的行上指定,在加载密钥时依次尝试密码短语。
ssl_dhparam
- 语法: ssl_dhparam file;
- 默认: —
- 上下文: mail块、mail块中的server块
- 说明: 为DHE密码指定一个带有DH参数的文件,默认情况下,没有设置任何参数,因此不会使用DHE密码。
ssl_ecdh_curve
- 语法: ssl_ecdh_curve curve;
- 默认: ssl_ecdh_curve auto;
- 上下文: mail块、mail块中的server块
- 说明: 指定ECDHE密码的curve。特殊值auto指示Nginx在使用OpenSSL 1.0.2或更高版本时,或使用旧版本的prime256v1时,使用OpenSSL库中的内置列表。
ssl_protocols
- 语法: ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
- 默认: ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- 上下文: mail块、mail块中的server块
- 说明: 启用指定的协议。
ssl_ciphers
ssl_prefer_server_ciphers
- 语法: ssl_prefer_server_ciphers on|off;
- 默认: ssl_prefer_server_ciphers off;
- 上下文: mail块、mail块中的server块
- 说明: 指定使用SSLv3和TLS协议时,服务器密码应该优先于客户端密码。
ssl_session_cache
- 语法: ssl_session_cache off|none|[builtin[:size]] [shared:name:size];
- 参数说明:
off – 表示严格禁止使用会话缓存,Nginx明确告诉客户端会话不能被重用none – 表示不允许使用会话缓存,Nginx告诉客户端可以重用会话,但实际上并不在缓存中存储会话参数builtin – 表示一个内置于OpenSSL的缓存,仅由一个工作进程使用,缓存大小在会话中指定,如果未给出大小,则等于20480个会话,使用内置缓存可能会导致内存碎片shared – 表示在所有工作进程之间共享的缓存,缓存大小以字节为单位,1M字节可以存储大约4000个会话,每个共享缓存应该有一个任意名称,同名缓存可用于多个虚拟服务器 - 默认: ssl_session_cache none;
- 上下文: mail块、mail块中的server块
- 说明: 设置存储会话参数的缓存的类型和大小。
ssl_session_tickets
- 语法: ssl_session_tickets on|off;
- 默认: ssl_session_tickets on;
- 上下文: mail块、mail块中的server块
- 说明: 启用或禁用通过TLS会话票证恢复会话。
ssl_session_ticket_key
ssl_session_timeout
- 语法: ssl_session_timeout time;
- 默认: ssl_session_timeout 5m;
- 上下文: mail块、mail块中的server块
- 说明: 指定客户端可以重用会话参数的时间。
ssl_verify_client
- 语法: ssl_verify_client on|off|optional|optional_no_ca;
- 默认: ssl_verify_client off;
- 上下文: mail块、mail块中的server块
- 说明: 允许验证客户端的证书,验证结果在认证请求的"Auth-SSL-Verify"头中传递。参数optional表示请求客户端证书,并验证证书是否存在。参数optional_no_ca表示请求客户端证书,但不要求它由受信任的CA证书签名。这适用于Nginx外部的服务执行实际证书验证的情况。证书的内容可以通过发送给身份验证服务器的请求进行访问。
ssl_verify_depth
- 语法: ssl_verify_depth number;
- 默认: ssl_verify_depth 1;
- 上下文: mail块、mail块中的server块
- 说明: 设置客户端证书链中的验证深度。
ssl_client_certificate
- 语法: ssl_client_certificate file;
- 默认: —
- 上下文: mail块、mail块中的server块
- 说明: 指定一个PEM格式的受信任CA证书用于验证客户端的证书。证书列表将发送给客户端,如果不希望这样,可以使用ssl_trusted_certificate指令。
ssl_trusted_certificate
- 语法: ssl_trusted_certificate file;
- 默认: —
- 上下文: mail块、mail块中的server块
- 说明: 指定一个PEM格式的受信任CA证书用于验证客户端的证书。
ssl_crl
- 语法: ssl_crl file;
- 默认: —
- 上下文: mail块、mail块中的server块
- 说明: 指定一个PEM格式的撤销证书(CRL)用于验证客户端的证书。
2.5、位于stream块的配置指令
要使用stream模块相关内容需要在构建Nginx时加上配置选项: –with-stream
2.5.1、ngx_stream_access_module模块
allow
- 语法: allow address|CIDR|unix:|all;
- 默认: —
- 上下文: stream块、stream块中的server块
- 说明: 表示描述的网络地址有权直接访问。如果指定unix:,则允许所有UNIX域套接字的访问。注意:allow和deny的规则是按顺序执行的。
deny
2.5.2、ngx_stream_core_module模块
variables_hash_max_size
- 语法: variables_hash_max_size size;
- 默认: variables_hash_max_size 1024;
- 上下文: stream块
- 说明: 设置变量哈希表的最大容量。
variables_hash_bucket_size
- 语法: variables_hash_bucket_size size;
- 默认: variables_hash_bucket_size 64;
- 上下文: stream块
- 说明: 设置变量哈希桶的容量。
server
listen
error_log
- 语法: error_log file [level];
- 参数说明:
file – 表示存储日志的文件,特殊值stderr表示选择标准错误文件,可以通过指定"syslog:"前缀来配置日志到syslog,可以通过指定"memory:"前缀和缓冲区大小来配置到循环内存缓冲区的日志记录level – 表示日志记录的级别,可以是以下级别之一:debug、info、notice、warn、error、crit、alert或emerg。以上的日志级别是按严重性递增的顺序列出的,设置某个日志级别将导致记录指定的和更严重的日志级别的所有消息,如果省略此参数,则默认使用error级别记录日志 - 默认: error_log logs/error.log error;
- 上下文: stream块、stream块中的server块
- 说明: 配置日志记录,可以在同一配置级别上指定多个日志,如果在全局配置级别上未明确定义将日志写入文件,则将使用默认文件。如果要打印DEBUG级别的日志,需在构建Nginx时加上配置选项: –with-debug。
resolver_timeout
- 语法: resolver_timeout time;
- 默认: resolver_timeout 30s;
- 上下文: stream块、stream块中的server块
- 说明: 设置DNS操作的超时时间。
proxy_protocol_timeout
- 语法: proxy_protocol_timeout time;
- 默认: proxy_protocol_timeout 30s;
- 上下文: stream块、stream块中的server块
- 说明: 指定读取代理协议报头以完成的超时时间,如果在此时间内没有传输整个报头,连接将关闭。
tcp_nodelay
- 语法: tcp_nodelay on|off;
- 默认: tcp_nodelay on;
- 上下文: stream块、stream块中的server块
- 说明: 启用或禁用TCP_NODELAY选项的使用,该选项对客户端和代理服务器连接都启用。
preread_buffer_size
- 语法: preread_buffer_size size;
- 默认: preread_buffer_size 16k;
- 上下文: stream块、stream块中的server块
- 说明: 指定预读缓冲区的大小。
preread_timeout
- 语法: preread_timeout time;
- 默认: preread_timeout 30s;
- 上下文: stream块、stream块中的server块
- 说明: 指定预读阶段的超时时间。
2.5.3、ngx_stream_geoip_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-stream_geoip_module 该模块需要MaxMind GeoIP库的支持
geoip_country
- 语法: geoip_country file;
- 默认: —
- 上下文: stream块
- 说明: 指定用于根据客户端IP地址确定国家的数据库。使用此数据库时可用以下变量:
- $geoip_country_code:两个字母的国家/地区代码,例如"RU"、“US”
- $geoip_country_code3:三个字母的国家/地区代码,例如"RUS"、“USA”
- $geoip_country_name:国家名称,例如"Russian Federation"、“United States”
geoip_org
- 语法: geoip_org file;
- 默认: —
- 上下文: stream块
- 说明: 指定用于根据客户端 IP 地址确定组织的数据库。使用此数据库时可用以下变量:
- $geoip_org:组织名称,例如"The University of Melbourne"
geoip_city
- 语法: geoip_city file;
- 默认: —
- 上下文: stream块
- 说明: 指定用于根据客户端IP地址确定国家、地区和城市的数据库。使用此数据库时可用以下变量:
- $geoip_city_continent_code:两个字母的大陆代码,例如"EU"、“NA”
- $geoip_city_country_code:两个字母的国家/地区代码,例如"RU"、“US”
- $geoip_city_country_code3:三个字母的国家/地区代码,例如"RUS"、“USA”
- $geoip_city_country_name:国家名称,例如"Russian Federation"、“United States”
- $geoip_dma_code:根据Google AdWords API中的地理定位
- $geoip_latitude:纬度
- $geoip_longitude:经度
- $geoip_region:双符号国家/地区代码(地区、领土、州、省、联邦土地等),例如"48"、“DC”
- $geoip_region_name:国家/地区名称(地区、领地、州、省、联邦土地等),例如"Moscow City"、“District of Columbia”
- $geoip_city:城市名称,例如"Moscow"、“Washington”
- $geoip_postal_code:邮政编码
2.5.4、ngx_stream_geo_module模块
geo
- 语法: geo [$address] $variable {…}
- 默认: —
- 上下文: stream块
- 说明: 根据客户端IP地址创建具有值的变量。
2.5.5、ngx_stream_limit_conn_module模块
limit_conn_zone
limit_conn
limit_conn_log_level
- 语法: limit_conn_log_level info|notice|warn|error;
- 默认: limit_conn_log_level error;
- 上下文: stream块、stream块中的server块
- 说明: 为服务器限制连接数的情况设置所需的日志记录级别。
limit_conn_dry_run
- 语法: limit_conn_dry_run on|off;
- 默认: limit_conn_dry_run off;
- 上下文: stream块、stream块中的server块
- 说明: 启用试运行模式。在这种模式下,连接数没有限制,但是在共享内存区,过多的连接数照常计算。
2.5.5、ngx_stream_log_module模块
log_format
access_log
open_log_file_cache
2.5.6、ngx_stream_map_module模块
map
- 语法: map string $variable {…};
- 默认: —
- 上下文: stream块
- 说明: 创建一个新变量,其值取决于第一个参数中指定的一个或多个源变量的值。
map_hash_max_size
- 语法: map_hash_max_size size;
- 默认: map_hash_max_size 2048;
- 上下文: stream块
- 说明: 设置映射变量哈希表的最大容量。
map_hash_bucket_size
- 语法: map_hash_bucket_size size;
- 默认: map_hash_bucket_size 32|64|128;
- 上下文: stream块
- 说明: 设置映射变量哈希桶的容量。
2.5.7、ngx_stream_proxy_module模块
proxy_pass
proxy_bind
proxy_socket_keepalive
- 语法: proxy_socket_keepalive on|off;
- 默认: proxy_socket_keepalive off;
- 上下文: stream块、stream块中的server块
- 说明: 为发送到代理服务器的连接配置"TCP keepalive"行为。默认情况下,操作系统的设置对套接字有效,如果该指令的值被设置为"on",则该套接字的SO_KEEPALIVE选项将被打开。
proxy_connect_timeout
- 语法: proxy_connect_timeout time;
- 默认: proxy_connect_timeout 60s;
- 上下文: stream块、stream块中的server块
- 说明: 定义与代理服务器建立连接的超时时间。需要注意的是,这个超时时间通常不能超过75秒。
proxy_timeout
- 语法: proxy_timeout time;
- 默认: proxy_timeout 10m;
- 上下文: stream块、stream块中的server块
- 说明: 设置客户机或代理服务器连接上连续的两个读或写操作之间的超时时间,如果在此时间内没有传输数据,连接将关闭。
proxy_buffer_size
- 语法: proxy_buffer_size size;
- 默认: proxy_buffer_size 16k;
- 上下文: stream块、stream块中的server块
- 说明: 设置用于从代理服务器读取数据的缓冲区的大小,还设置用于从客户端读取数据的缓冲区的大小。
proxy_upload_rate
- 语法: proxy_upload_rate rate;
- 参数说明:
- 默认: proxy_upload_rate 0;
- 上下文: stream块、stream块中的server块
- 说明: 限制从客户端读取数据的速度。这个限制是针对每个连接设置的,所以如果客户端同时打开两个连接,那么总的速率将是指定限制的两倍。
proxy_download_rate
- 语法: proxy_download_rate rate;
- 参数说明:
- 默认: proxy_download_rate 0;
- 上下文: stream块、stream块中的server块
- 说明: 限制从代理服务器读取数据的速度。这个限制是针对每个连接设置的,所以如果客户端同时打开两个连接,那么总的速率将是指定限制的两倍。
proxy_requests
- 语法: proxy_requests number;
- 默认: proxy_requests 0;
- 上下文: stream块、stream块中的server块
- 说明: 设置客户端与现有UDP流会话之间的绑定被丢弃的客户端数据报的数量。在接收到指定数量的数据报后,来自同一客户机的下一个数据报将启动一个新的会话,当所有客户端数据报都传输到代理服务器并接收到预期的响应数时,或者当会话达到超时时,会话将终止。
proxy_responses
- 语法: proxy_responses number;
- 默认: —
- 上下文: stream块、stream块中的server块
- 说明: 如果使用UDP协议,设置期望从代理服务器响应客户端数据报的数据报数,number作为会话终止的提示。默认情况下,不限制数据报的数量,如果number设置为0,则不期望响应。但是,如果接收到响应,而会话仍未完成,则将处理响应。
proxy_next_upstream
- 语法: proxy_next_upstream on|off;
- 默认: proxy_next_upstream on;
- 上下文: stream块、stream块中的server块
- 说明: 当无法建立到代理服务器的连接时,确定是否将客户端连接传递到下一个服务器,将连接传递到下一个服务器可能受到尝试次数和时间的限制。
proxy_next_upstream_tries
- 语法: proxy_next_upstream_tries number;
- 默认: proxy_next_upstream_tries 0;
- 上下文: stream块、stream块中的server块
- 说明: 限制请求传递到下一个服务器的可能尝试次数,number为0时表示关闭此限制。
proxy_next_upstream_timeout
- 语法: proxy_next_upstream_timeout time;
- 默认: proxy_next_upstream_timeout 0;
- 上下文: stream块、stream块中的server块
- 说明: 限制请求传递到下一个服务器的时间,time为0时表示关闭此限制。
proxy_protocol
- 语法: proxy_protocol on|off;
- 默认: proxy_protocol off;
- 上下文: stream块、stream块中的server块
- 说明: 启用PROXY协议以连接到代理服务器。
proxy_ssl
- 语法: proxy_ssl on|off;
- 默认: proxy_ssl off;
- 上下文: stream块、stream块中的server块
- 说明: 启用连接到代理服务器的SSL/TLS协议。
proxy_ssl_session_reuse
- 语法: proxy_ssl_session_reuse on|off;
- 默认: proxy_ssl_session_reuse on;
- 上下文: stream块、stream块中的server块
- 说明: 确定在使用代理服务器时SSL会话是否可以重用。如果日志中出现错误"SSL3_GET_FINISHED:digest check failed",请尝试禁用会话重用。
proxy_ssl_protocols
- 语法: proxy_ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
- 默认: proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- 上下文: stream块、stream块中的server块
- 说明: 启用连接到代理服务器的指定协议。
proxy_ssl_ciphers
- 语法: proxy_ssl_ciphers ciphers;
- 默认: proxy_ssl_ciphers DEFAULT;
- 上下文: stream块、stream块中的server块
- 说明: 指定连接到代理服务器的启用密码,密码以OpenSSL库能够理解的格式指定。可以使用"openssl ciphers"命令查看完整列表。
proxy_ssl_name
- 语法: proxy_ssl_name name;
- 默认: proxy_ssl_name host from proxy_pass;
- 上下文: stream块、stream块中的server块
- 说明: 允许覆盖用于验证代理服务器的证书的服务器名,并在与代理服务器建立连接时通过SNI传递,服务器名也可以使用变量来指定。默认情况下,使用proxy_pass地址的主机部分。
proxy_ssl_server_name
- 语法: proxy_ssl_server_name on|off;
- 默认: proxy_ssl_server_name off;
- 上下文: stream块、stream块中的server块
- 说明: 在与代理服务器建立连接时,启用或禁用通过TLS服务器名称指示扩展(SNI, RFC 6066)传递服务器名。
proxy_ssl_verify
- 语法: proxy_ssl_verify on|off;
- 默认: proxy_ssl_verify off;
- 上下文: stream块、stream块中的server块
- 说明: 启用或禁用对代理服务器证书的验证。
proxy_ssl_verify_depth
- 语法: proxy_ssl_verify_depth number;
- 默认: proxy_ssl_verify_depth 1;
- 上下文: stream块、stream块中的server块
- 说明: 设置代理服务器证书链中的验证深度。
proxy_ssl_trusted_certificate
- 语法: proxy_ssl_trusted_certificate file;
- 默认: —
- 上下文: stream块、stream块中的server块
- 说明: 指定一个PEM格式的受信任CA证书用于验证代理服务器的证书。
proxy_ssl_crl
- 语法: proxy_ssl_crl file;
- 默认: —
- 上下文: stream块、stream块中的server块
- 说明: 指定一个PEM格式的撤销证书(CRL)用于验证代理服务器的证书。
proxy_ssl_certificate
- 语法: proxy_ssl_certificate file;
- 默认: —
- 上下文: stream块、stream块中的server块
- 说明: 指定一个PEM格式的证书用于验证代理服务器的证书。
proxy_ssl_certificate_key
- 语法: proxy_ssl_certificate_key file;
- 默认: —
- 上下文: stream块、stream块中的server块
- 说明: 指定一个PEM格式的带密钥的证书用于验证代理服务器的证书。可以指定值engine:name:id代替文件,它从OpenSSL engine name中加载具有指定id的密钥。
proxy_ssl_password_file
- 语法: proxy_ssl_password_file file;
- 默认: —
- 上下文: stream块、stream块中的server块
- 说明: 指定一个带有密钥密码短语的文件,其中每个密码短语在单独的行上指定,在加载密钥时依次尝试密码短语。
2.5.8、ngx_stream_realip_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-stream_realip_module
set_real_ip_from
- 语法: set_real_ip_from address|CIDR|unix:;
- 默认: —
- 上下文: stream块、stream块中的server块
- 说明: 定义已知可发送正确替换地址的可信地址,如果指定了特殊值unix:,表示所有unix域套接字都是可信的,可信地址也可以使用主机名来指定。
2.5.9、ngx_stream_return_module模块
return
- 语法: return value;
- 默认: —
- 上下文: stream块中的server块
- 说明: 指定要发送给客户端的值,该值可以包含文本、变量或者它们的组合。
2.5.10、ngx_stream_split_clients_module模块
split_clients
2.5.11、ngx_stream_ssl_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-stream_ssl_module
ssl_handshake_timeout
- 语法: ssl_handshake_timeout time;
- 默认: ssl_handshake_timeout 60s;
- 上下文: stream块、stream块中的server块
- 说明: 指定完成SSL握手的超时时间。
ssl_certificate
- 语法: ssl_certificate file;
- 默认: —
- 上下文: stream块、stream块中的server块
- 说明: 为给定的服务器指定PEM格式的证书文件。如果除主证书外还应指定中间证书,则应按以下顺序在同一文件中指定它们:首先是主证书,然后是中间证书。PEM格式的密钥可以放在同一个文件中。可以在参数file中使用变量。
ssl_certificate_key
- 语法: ssl_certificate_key file;
- 默认: —
- 上下文: stream块、stream块中的server块
- 说明: 为给定的服务器指定PEM格式的密钥文件。可以指定值engine:name:id,而不是file,它从OpenSSL engine name中加载具有指定id的密钥。可以指定值data:$variable而不是file,该文件不使用中间文件从变量加载密钥,需要注意的是,这种语法的不适当使用可能会带来安全隐患,比如将密钥数据写入错误日志。可以在参数file中使用变量。
ssl_password_file
- 语法: ssl_password_file file;
- 默认: —
- 上下文: stream块、stream块中的server块
- 说明: 指定一个带有密钥密码短语的文件,其中每个密码短语在单独的行上指定,在加载密钥时依次尝试密码短语。
ssl_dhparam
- 语法: ssl_dhparam file;
- 默认: —
- 上下文: stream块、stream块中的server块
- 说明: 为DHE密码指定一个带有DH参数的文件,默认情况下,没有设置任何参数,因此不会使用DHE密码。
ssl_ecdh_curve
- 语法: ssl_ecdh_curve curve;
- 默认: ssl_ecdh_curve auto;
- 上下文: stream块、stream块中的server块
- 说明: 指定ECDHE密码的curve。特殊值auto指示Nginx在使用OpenSSL 1.0.2或更高版本时,或使用旧版本的prime256v1时,使用OpenSSL库中的内置列表。
ssl_protocols
- 语法: ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
- 默认: ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- 上下文: stream块、stream块中的server块
- 说明: 启用指定的协议。
ssl_ciphers
ssl_verify_client
- 语法: ssl_verify_client on|off|optional|optional_no_ca;
- 默认: ssl_verify_client off;
- 上下文: stream块、stream块中的server块
- 说明: 允许验证客户端证书,验证结果存储在 $ssl_client_verify 变量中。如果在客户端证书验证过程中发生错误,或者客户端没有提供所需的证书,连接将关闭。参数optional表示请求客户端证书,并验证证书是否存在。参数optional_no_ca表示请求客户端证书,但不要求它由受信任的CA证书签名,这适用于Nginx外部的服务执行实际证书验证的情况。证书的内容可以通过 $ssl_client_cert 变量访问。
ssl_verify_depth
- 语法: ssl_verify_depth number;
- 默认: ssl_verify_depth 1;
- 上下文: stream块、stream块中的server块
- 说明: 设置客户端证书链中的验证深度。
ssl_client_certificate
- 语法: ssl_client_certificate file;
- 默认: —
- 上下文: stream块、stream块中的server块
- 说明: 指定一个PEM格式的受信任CA证书文件用于验证客户端的证书。证书列表将发送给客户端,如果不希望这样,可以使用ssl_trusted_certificate指令。
ssl_trusted_certificate
- 语法: ssl_trusted_certificate file;
- 默认: —
- 上下文: stream块、stream块中的server块
- 说明: 指定一个PEM格式的受信任CA证书用于验证客户端的证书。
ssl_prefer_server_ciphers
- 语法: ssl_prefer_server_ciphers on|off;
- 默认: ssl_prefer_server_ciphers off;
- 上下文: stream块、stream块中的server块
- 说明: 指定使用SSLv3和TLS协议时,服务器密码应该优先于客户端密码。
ssl_session_cache
- 语法: ssl_session_cache off|none|[builtin[:size]] [shared:name:size];
- 参数说明:
off – 表示严格禁止使用会话缓存,Nginx明确告诉客户端会话不能被重用none – 表示不允许使用会话缓存,Nginx告诉客户端可以重用会话,但实际上并不在缓存中存储会话参数builtin – 表示一个内置于OpenSSL的缓存,仅由一个工作进程使用,缓存大小在会话中指定,如果未给出大小,则等于20480个会话,使用内置缓存可能会导致内存碎片shared – 表示在所有工作进程之间共享的缓存,缓存大小以字节为单位,1M字节可以存储大约4000个会话,每个共享缓存应该有一个任意名称,同名缓存可用于多个虚拟服务器 - 默认: ssl_session_cache none;
- 上下文: stream块、stream块中的server块
- 说明: 设置存储会话参数的缓存的类型和大小。
ssl_session_tickets
- 语法: ssl_session_tickets on|off;
- 默认: ssl_session_tickets on;
- 上下文: stream块、stream块中的server块
- 说明: 启用或禁用通过TLS会话票证恢复会话。
ssl_session_ticket_key
ssl_session_timeout
- 语法: ssl_session_timeout time;
- 默认: ssl_session_timeout 5m;
- 上下文: stream块、stream块中的server块
- 说明: 指定客户端可以重用会话参数的时间。
ssl_crl
- 语法: ssl_crl file;
- 默认: —
- 上下文: stream块、stream块中的server块
- 说明: 指定一个PEM格式的撤销证书(CRL)用于验证客户端的证书。
2.5.12、ngx_stream_ssl_preread_module模块
要使用该模块需要在构建Nginx时加上配置选项: –with-stream_ssl_preread_module
ssl_preread
- 语法: ssl_preread on|off;
- 默认: ssl_preread off;
- 上下文: stream块、stream块中的server块
- 说明: 允许在预读取阶段从ClientHello消息中提取信息。
2.5.13、ngx_stream_upstream_module模块
upstream
server
- 语法: server address [parameters];
- 默认: —
- 上下文: stream块中的upstream块
- 说明: 定义服务器的地址和其他参数,该地址可以指定为带有可选端口域名或IP地址,也可以指定为"unix:"前缀后指定的UNIX域套接字路径,如果不指定端口,则默认使用80端口。解析为多个IP地址的域名同时定义了多个服务器。可以定义以下参数:
- weight=number:设置服务器的权重,默认为1
- max_conns=number:限制number到代理服务器的最大同时活动连接数,默认值为零,表示没有限制。如果服务器组不驻留在共享内存中,则限制适用于每个工作进程
- max_fails=number:设置在fail_timeout参数设置的持续时间内应该发生的与服务器通信的失败尝试次数,以考虑服务器在fail_timeout参数设置的持续时间内不可用。默认情况下,不成功尝试的次数设置为1,设置为0时表示禁用尝试记帐。被视为不成功的尝试由proxy_next_upstream、fastcgi_next_upstream、uwsgi_next_upstream、scgi_next_upstream、memcached_next_upstream和grpc_next_upstream指令定义。
- fail_timeout=time:该参数表示与服务器通信失败的指定次数发生的时间,认为服务器不可用;服务器将被视为不可用的时间段。默认情况下,该参数设置为10秒
- backup:将服务器标记为备份服务器,当主服务器不可用时,它将传递请求
- down:将服务器标记为永久不可用
- resolve:监控服务器域名对应的IP地址的变化,并自动修改upstream配置而不需要重新启动Nginx,服务器组必须位于共享内存中,为了让这个参数工作,resolver指令必须在http块或相应的upstream块中指定
- route=string:设置服务器路由名称
- service=name:启用解析DNS SRV记录并设置服务名,为了使该参数起作用,必须为服务器指定解析参数并指定不带端口号的主机名
- slow_start=time:设置服务器将其权重从0恢复到标称值的时间,即不正常的服务器变为正常的时间,或服务器在一段时间内被认为不可用后恢复可用的时间,默认值为0,即禁用慢启动
- drain:使服务器进入"draining"模式,在这种模式下,只有绑定到服务器的请求才会被代理到服务器
2.5.14、ngx_stream_upstream_hash_module模块
hash
- 语法: hash key [consistent];
- 默认: —
- 上下文: stream块中的upstream块
- 说明: 为服务器组指定负载均衡方法,其中客户端-服务器的映射是基于hash key的。key可以包含文本、变量或者它们的组合。需要注意的是,从组中添加或删除服务器可能导致将大多数key重新映射到不同的服务器。该方法与Cache::Memcached Perl库兼容。如果指定了consistent参数,则将使用ketama一致性哈希方法,该方法确保在向组中添加或从组中删除服务器时,只有少数键将被重新映射到不同的服务器,这有助于为缓存服务器实现更高的缓存命中率,该方法兼容Cache::Memcached::Fast Perl库,ketama_points参数设置为160。
2.5.15、ngx_stream_upstream_least_conn_module模块
least_conn
- 语法: least_conn;
- 默认: —
- 上下文: stream块中的upstream块
- 说明: 指定组应使用负载均衡方法,将请求传递给活动连接数最少的服务器,并考虑服务器的权重。如果有多个这样的服务器,则使用加权循环平衡方法依次尝试它们。
2.5.16、ngx_stream_upstream_random_module模块
random
- 语法: random [two [method]];
- 参数说明:
two – 表示Nginx随机选择两个服务器,然后使用指定的method 选择一个服务器method – 有两种选择:
- 默认是least_conn,它将请求传递给活动连接数最少的服务器
- least_time将请求传递给具有最少平均响应时间和最少活动连接数的服务器
- 默认: —
- 上下文: stream块中的upstream块
- 说明: 指定组应使用负载均衡方法,将请求传递给随机选择的服务器,并考虑服务器的权重。
2.5.17、ngx_stream_upstream_zone_module模块
zone
- 语法: zone name [size];
- 默认: —
- 上下文: stream块中的upstream块
- 说明: 定义共享内存区域的name和size,该区域保持工作进程之间共享的组配置和运行时状态,几个组可能共享同一个区域,在这种情况下,只指定一次size就足够了。
|