nginx中文文档-ngx_http_proxy_module(S-T)

此页面版本:2016-06-08
本文档包含以下指令:proxy_send_lowat、proxy_send_timeout、proxy_set_body、proxy_set_header、proxy_ssl_certificate、proxy_ssl_certificate_key、proxy_ssl_ciphers、proxy_ssl_crl、proxy_ssl_name、proxy_ssl_password_file、proxy_ssl_server_name、proxy_ssl_session_reuse、proxy_ssl_protocols、proxy_ssl_trusted_certificate、proxy_ssl_verify、proxy_ssl_verify_depth、proxy_store、proxy_store_access、proxy_temp_file_write_size、proxy_temp_path

proxy_send_lowat

语法:proxy_send_lowat size
默认:proxy_send_lowat 0
上下文:http, server, location

指令如果设置为非0值,nginx将会尝试使用kqueue方法的NOTE_LOWAT标志或SO_SNDLOWAT socket选项减少与外部被代理服务器的发送操作。
该指令在Linux、Solaris、Windows上忽略。

proxy_send_timeout

语法:proxy_send_timeout time
默认:proxy_send_timeout 60s
上下文:http, server, location

设置传输请求到被代理服务器的超时时间。超时时间设置为两次成功的写操作之间,而不是整个请求的传输。如果被代理服务器在这个时间内没有收到任何数据,连接将被关闭。

proxy_set_body

语法:proxy_set_body value
默认:—
上下文:http, server, location

允许重新定义传给被代理服务器的请求体,value可以包含文本、变量以及它们的混合。

proxy_set_header

语法:proxy_set_header field value
默认:proxy_set_header Host $proxy_host
proxy_set_header Connection close
上下文:http, server, location

允许重定义或追加请求的头域到被代理服务器。value可以包含文本、变量和它们的混合。当且仅当本层级中没有proxy_set_header时,指令会继承自上一层级。默认情况下,只有两个域重新定义:

proxy_set_header Host       $proxy_host;
proxy_set_header Connection close;

如果缓存启用,原始请求中的“If-Modified-Since”, “If-Unmodified-Since”, “If-None-Match”, “If-Match”, “Range”, 和 “If-Range”头域将不会发送给被代理服务器。
未变更的“Host”请求头域可以这样传递:
proxy_set_header Host $http_host;
但是,如果客户端请求头中没有这个字段,就不会传。这时最好用$host变量-它的值在请求头中没有“Host”字段时使用服务器名称:
proxy_set_header Host $host;
服务器名称可以跟端口一同传给被代理服务器:
proxy_set_header Host $host:$proxy_port;
如果请求头域是空字符串,则这个域不会被传给被代理服务器:
proxy_set_header Accept-Encoding "";

proxy_ssl_certificate

语法:proxy_ssl_certificate file
默认:—
上下文:http, server, location
版本:1.7.8+

定义一个PEM格式的证书文件用于HTTPS的认证。

proxy_ssl_certificate_key

语法:proxy_ssl_certificate_key file
默认:—
上下文:http, server, location
版本:1.7.8+

定义一个PEM格式的密钥文件用于HTTPS服务器认证。
值engine:name:id可以代替file(1.7.9+),从OpenSSL引擎name加载指定id的密钥。

proxy_ssl_ciphers

语法:proxy_ssl_ciphers ciphers
默认:proxy_ssl_ciphers DEFAULT
上下文:http, server, location
版本:1.5.6+

为发送给被代理HTTPS服务器请求指定可用的密码算法。密码算法可以使用OpenSSL库可理解的格式。
全部列表可以通过“openssl ciphers”命令查看。

proxy_ssl_crl

语法:proxy_ssl_crl file
默认:—
上下文:http, server, location
版本:1.7.0+

指定PEM格式的吊销证书文件,用于验证被代理服务器的证书。

proxy_ssl_name

语法:proxy_ssl_name name
默认:proxy_ssl_name $proxy_host
上下文:http, server, location
版本:1.7.0+

允许覆盖服务器名称,用于验证被代理HTTPS服务器的证书。
默认情况下,proxy_passURL的host部分会被使用。

proxy_ssl_password_file

语法:proxy_ssl_password_file file
默认:—
上下文:http, server, location
版本:1.7.8+

指定包含密钥密码的文件,每个密码单独定义在一行中。在加载密钥时会尝试密码。

proxy_ssl_server_name

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

启用或禁用当与被代理HTTPS服务器建立连接时通过TLS Server Name Indication扩展。

proxy_ssl_session_reuse

语法:proxy_ssl_session_reuse on | off
默认:proxy_ssl_session_reuse on
上下文:http, server, location

决定当与被代理服务器工作时,SSL会话是否能够重用。如果“SSL3_GET_FINISHED:digest check failed”错误出现在日志中,尝试禁用会话重用。

proxy_ssl_protocols

语法:proxy_ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2]
默认:proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2
上下文:http, server, location
版本:1.5.6+

为发送给HTTPS服务器的请求启用指定的协议。

proxy_ssl_trusted_certificate

语法:proxy_ssl_trusted_certificate file
默认:—
上下文:http, server, location
版本:1.7.0+

指定一个PEM格式的可信CA证书文件,用于验证被代理HTTPS服务器的证书。

proxy_ssl_verify

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

启用或禁用验证被代理服务器证书功能。

proxy_ssl_verify_depth

语法:proxy_ssl_verify_depth number
默认:proxy_ssl_verify_depth 1
上下文:http, server, location
版本:1.7.0+

设置验证被代理HTTPS服务器的证书链深度。

proxy_store

语法:proxy_store on | off | string
默认:proxy_store off
上下文:http, server, location

启用保存文件到磁盘。on参数保存文件在相应alias或root指令的路径。off参数禁用保存文件。文件名可以显式的使用带参数的string:
proxy_store /data/www$original_uri;
文件的修改时间根据收到的响应头中的“Last-Modified”设置。响应先写到临时文件中,然后重命名。从0.8.9版本开始,临时文件和持久化存储文件可以放在不同的文件系统中。但需要知道的是,这种情况下在两个不同的文件系统中复制而不是简单的重命名操作。建议在同一个文件系统中给出临时目录和保存目录的位置。

指令可以用于创建本地静态文件的副本,例如:

location /images/ {
    root               /data/www;
    error_page         404 = /fetch$uri;
}

location /fetch/ {
    internal;

    proxy_pass         http://backend/;
    proxy_store        on;
    proxy_store_access user:rw group:rw all:r;
    proxy_temp_path    /data/temp;

    alias              /data/www/;
}

或这样:

location /images/ {
    root               /data/www;
    error_page         404 = @fetch;
}

location @fetch {
    internal;

    proxy_pass         http://backend;
    proxy_store        on;
    proxy_store_access user:rw group:rw all:r;
    proxy_temp_path    /data/temp;

    root               /data/www;
}

proxy_store_access

语法:proxy_store_access users:permissions
默认:proxy_store_access user:rw
上下文:http, server, location

设置新建的文件和目录的访问权限,如:
proxy_store_access user:rw group:rw all:r;
如果group或all的权限定义了,user权限可以忽略:
proxy_store_access group:rw all:r;

proxy_temp_file_write_size

语法:proxy_temp_file_write_size size
默认:proxy_temp_file_write_size 8k|16k
上下文:http, server, location

当从被代理服务器收到请求的缓冲区开启时,限制一次写入临时文件的数据大小。默认情况下,大小由proxy_buffer_size指令和proxy_buffers指令设置的两个缓冲区限制。临时文件的最大值由proxy_max_temp_file_size指令设置。

proxy_temp_path

语法:proxy_temp_path path [level1 [level2 [level3]]]
默认:proxy_temp_path proxy_temp
上下文:http, server, location

定义保存从被代理服务器收到数据临时文件的目录。超过三层的子目录可以用在指定目录之下。例如,下面的配置:
proxy_temp_path /spool/nginx/proxy_temp 1 2;
临时文件可能类似:
/spool/nginx/proxy_temp/7/45/00000123457
参见proxy_cache_path指令的use_temp_path参数。

内嵌变量
ngx_http_proxy_module模块支持内嵌变量,可以用于proxy_set_header组成头部:

$proxy_host
proxy_pass指令中定义的被代理服务器的名称和端口


$proxy_port
proxy_pass指令中定义的端口号,或协议的默认端口号


$proxy_add_x_forwarded_for
客户端“X-Forwarded-For”请求头域带$remote_addr变量追加到它后面,用逗号分隔。如果“X-Forwarded-For”没有出现在请求头,$proxy_add_x_forwarded_for变量等于$remote_addr变量的值。