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变量的值。