nginx中文文档-ngx_mail_core_module

nginx邮件服务器模块。

该模块默认不会构建,需要通过–with-mail配置参数启用。

示例配置

worker_processes 1;

error_log /var/log/nginx/error.log info;

events {
    worker_connections  1024;
}

mail {
    server_name       mail.example.com;
    auth_http         localhost:9000/cgi-bin/nginxauth.cgi;

    imap_capabilities IMAP4rev1 UIDPLUS IDLE LITERAL+ QUOTA;

    pop3_auth         plain apop cram-md5;
    pop3_capabilities LAST TOP USER PIPELINING UIDL;

    smtp_auth         login plain cram-md5;
    smtp_capabilities "SIZE 10485760" ENHANCEDSTATUSCODES 8BITMIME DSN;
    xclient           off;

    server {
        listen   25;
        protocol smtp;
    }
    server {
        listen   110;
        protocol pop3;
        proxy_pass_error_message on;
    }
    server {
        listen   143;
        protocol imap;
    }
    server {
        listen   587;
        protocol smtp;
    }
}

listen

语法:listen address:port [ssl] [backlog=number] [bind] [ipv6only=on|off] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]]
默认:—
上下文:server

设置服务器将接受请求的socket的地址和端口。可以只指定端口。地址可以是主机名,例如:

listen 127.0.0.1:110;
listen *:110;
listen 110;     # same as *:110
listen localhost:110;

IPv6地址(0.7.58+)可以指定在方括号中:

listen [::1]:110;
listen [::]:110;

UNIX-domain sockets(1.3.5+)指定以“unix:”前缀:
listen unix:/var/run/nginx.sock;
不同的服务器必须监听不同的地址:端口对。
ssl参数指定所有这个端口接受的连接需要工作在SSL模式。
listen指令可以有多个附加参数指定socket相关的系统调用。

backlog=number
设置listen()调用的backlog参数,用于限制等待连接队列的最大长度(1.9.2+)。默认情况下,FreeBSD、DragonFly BSD和Mac OS X系统上是-1,其他平台上是511。

bind
这个参数为给定的地址端口对执行单独的bind()调用。实际上,如果有多个listen指令是相同的端口号但不同的地址,并且其中一个listen指令在所有地址上监听给定的端口(*:port),nginx将只绑定*:port。需要注意的是getsockname()系统调用会在这种情况下发生以决定接受连接的地址。如果使用了ipv6only或so_keepalive参数,那么对于一个给定的地址端口对,总会发生一个单独的bind()调用。

ipv6only=on|off
该参数决定(通过IPV6_V6ONLY socket选项)一个通过通配符地址[::]的IPv6 socket监听将只接受ipv6连接还是ipv6和ipv4都接受。该参数默认是开启的。可以在启动时设置一次。

so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]
这个参数配置了监听socket的“TCP keepalive”行为。如果该参数省略,则操作系统的设置会影响socket。如果它设置为“on”,SO_KEEPALIVE选项会被打开。如果值为“off”SO_KEEPALIVE选项将被关闭。一些操作系统支持设置TCP keepalive参数使用TCP_KEEPIDLE、TCP_KEEPINTVL和TCP_KEEPCNT socket选项。在这些操作系统上(目前,Linux 2.4+、NetBSD 5+以及FreeBSD 9.0-STABLE),可以使用keepidle、keepintvl和keepcnt参数。一个或两个参数可以忽略,这种情况下操作系统相应的socket选项的默认设置会生效。例如,
so_keepalive=30m::10
将会设置空闲超时时间(TCP_KEEPIDLE)为30分钟,将探测间隔(TCP_KEEPINTVL)设置为系统默认值,并设置探针数(TCP_KEEPCNT)为10。

mail

语法:mail { … }
默认:—
上下文:main

提供邮件服务器指令的配置文件上下文环境。

protocol

语法:protocol imap | pop3 | smtp
默认:—
上下文: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参数禁用。

resolver

语法:resolver address … [valid=time]
resolver off
默认:resolver off
上下文:mail, server

设置名称服务器用于查找客户端的主机名以传递给验证服务器,代理SMTP时是XCLIENT命令,例如:
resolver 127.0.0.1 [::1]:5353;
地址可以指定为域名或IP地址和一个可选的端口号(1.3.1+,1.2.2+)。如果端口号没有指定,将使用53号端口。名称服务器会通过轮询方式查询。
在1.1.7版本之前,只能配置一个名称服务器。指定IPv6地址的名称服务器从1.3.1和1.2.2版本开始支持。
默认情况下,nginx缓存响应结果使用TTL值。一个可选的valid参数可以覆盖它:
resolver 127.0.0.1 [::1]:5353 valid=30s;
在1.1.9版本之前,不能调整缓存时间,nginx总会缓存结果5分钟。
特殊值off禁用解析。

resolver_timeout

语法:resolver_timeout time
默认:resolver_timeout 30s
上下文:mail, server

设置DNS操作的超时时间,例如:
resolver_timeout 5s;

server

语法:server { … }
默认:—
上下文:mail

设置服务器的配置。

server_name

语法:server_name name
默认:server_name hostname
上下文:mail, server

设置服务器名称用于:

  • 初始化POP3/SMTP服务器握手
  • 在SASL CRAM-MD5验证中的盐
  • 连接到SMTP上游服务器的EHLO命令,如果XCLIENT命令开启

如果指令没有定义,则使用机器的主机名称。

timeout

语法:timeout time
默认:timeout 60s
上下文:mail, server

设置超时时间,用在代理到后端开始之前。

nginx中文文档-ngx_http_xslt_module

ngx_http_xslt_module模块(0.7.8+)是一个过滤器,用于使用一个或多个XSLT 样式表改变XML响应样式。该模块默认不会构建,需要通过–with-http_xslt_module配置参数开启。该模块需要libxml2和libxslt库。

示例配置

location / {
    xml_entities    /site/dtd/entities.dtd;
    xslt_stylesheet /site/xslt/one.xslt param=value;
    xslt_stylesheet /site/xslt/two.xslt;
}

xml_entities

语法:xml_entities path
默认:—
上下文:http, server, location

指定DTD文件声明实体字符。这个文件在配置阶段编译。由于技术原因,这个模块不能使用声明在处理过的XML中的外部子集,所以它会被忽略,然后使用一个特殊定义的文件替代它。文件不应该描述XML结构。它只声明需要的实体字符就够了,例如:
<!ENTITY nbsp "&#xa0;">

xslt_last_modified

语法:xslt_last_modified on | off
默认:xslt_last_modified off
上下文:http, server, location
版本:1.5.1+

允许在XSLT转换期间从原始响应头中保留“Last-Modified”字段,有助于缓存响应。
默认情况下,头域会被删除,因为在转换过程中,响应的内容改变了,可能包含动态生成的元素或与原始请求不同的部分。

xslt_param

语法:xslt_param parameter value
默认:—
上下文:http, server, location
版本:1.1.18+

定义XSLT样式表的参数。值看做是一个XPath表达式。值可以包含变量。为了传递字符串值到样式表,可以使用xslt_string_param指令。
可以有多个xslt_param指令。这些指令当且仅当当前层级中没有定义xslt_param和xslt_string_param指令时会继承自上一层级。

xslt_string_param

语法:xslt_string_param parameter value
默认:—
上下文:http, server, location
版本:1.1.18+

为XSLT样式表定义字符串参数。值中的XPath表达式是不被理解的。值可以包含变量。
可以有多个xslt_string_param指令。这些指令当且仅当当前层级中没有定义xslt_param和xslt_string_param指令时,会继承自上一层级。

xslt_stylesheet

语法:xslt_stylesheet stylesheet [parameter=value …];
默认:—
上下文:location

定义XLST样式表和它的可选参数。样式表在配置阶段编译。
参数可以是分开的,也可是聚合在同一行使用“:”分割。如果参数包含“:”字符,需要转义为“%3A”。同样libxslt需要将包含非字母数字的字符用单引号或双引号包裹起来,例如:
param1='http%3A//www.example.com':param2=value2
参数描述可以包含变量,例如整行的参数可以从一个变量中取:

location / {
    xslt_stylesheet /site/xslt/one.xslt
                    $arg_xslt_params
                    param1='$value1':param2=value2
                    param3=value3;
}

可以指定多个样式表。它们会按指定时的顺序应用。

xslt_types

语法:xslt_types mime-type
默认:xslt_types text/xml
上下文:http, server, location

对指定除了“text/xml”意外的MIME类型的响应启用转换。特殊值“*”匹配任意MIME类型(0.8.29+)。如果转换结果是一个HTML响应,它的MIME类型变更为“text/html”。