scgi_ignore_client_abort
语法:scgi_ignore_client_abort on | off
默认:scgi_ignore_client_abort off
上下文:http, server, location
决定当客户端没有等待响应关闭了连接时,是否与SCGI服务器关闭连接。
scgi_ignore_headers
语法:scgi_ignore_headers field …
默认:—
上下文:http, server, location
禁用处理SCGI服务器的响应头。下面的字段可以忽略:“X-Accel-Redirect”、“X-Accel-Expires”、“X-Accel-Limit-Rate”(1.1.6+)、“X-Accel-Buffering”(1.1.6+)、“X-Accel-Charset”(1.1.6+)、“Expires”、“Cache-Control”、“Set-Cookie”(0.8.44+)以及“Vary”(1.7.7+)。
如果不禁用,处理这些头域有以下效果:
- “X-Accel-Expires”、“Expires”、“Cache-Control”、“Set-Cookie”和“Vary”设置响应的缓存参数。
- “X-Accel-Redirect”执行指定URI的内部重定向。
- “X-Accel-Limit-Rate”设置传输响应到客户端的速率。
- “X-Accel-Buffering”启用或禁用响应的缓冲区。
- “X-Accel-Charset”设置希望的响应字符编码。
scgi_intercept_errors
语法:scgi_intercept_errors on | off
默认:scgi_intercept_errors off
上下文:http, server, location
决定当SCGI服务器响应的返回码大于等于300是,应该传给客户端,还是重定向到nginx通过error_page指令进行处理。
scgi_limit_rate
语法:scgi_limit_rate rate
默认:scgi_limit_rate 0
上下文:http, server, location
版本:1.7.7+
限制从SCGI服务器读取响应的速度。rate定义为字节每秒。零值禁用限速。限制针对每一个请求,如果nginx同时打开两个请求,总速率为两倍的指定值。限制只有在SCGI服务器响应缓冲区启用时有效。
scgi_max_temp_file_size
语法:scgi_max_temp_file_size size
默认:scgi_max_temp_file_size 1024m
上下文:http, server, location
当启用了SCGI服务器响应缓冲区,整个请求不能放到由scgi_buffer_size和scgi_buffers指令设置的缓冲区中时,一部分响应会保存到临时文件中。这个指令设置了临时文件的最大大小。一次写入到临时文件的数据量由scgi_temp_file_write_size指令设置。
零值禁用响应缓冲区写入临时文件功能。
这个限制不会对请求会缓存或保存到磁盘的响应生效。
scgi_next_upstream
语法:scgi_next_upstream error | timeout | invalid_header | http_500 | http_503 | http_403 | http_404 | non_idempotent | off …
默认:scgi_next_upstream error timeout
上下文:http, server, location
指定哪些情况下请求会传给下一个服务器:
error
当与服务器建立连接、传递请求或读取响应头时发生了错误
timeout
当与服务器建立连接、传递请求或读取响应头时发生了超时
invalid_header
服务器返回了空的或无效的响应
http_500
服务器返回500错误码
http_503
服务器返回503错误码
http_403
服务器返回403错误码
http_404
服务器返回404错误码
non_idempotent
一般地,非幂等方法(POST、LOCK、PATCH)不会传给下一个服务器,如果请求已经发给了一个上游服务器(1.9.13+)。启用这个选项允许重试这些请求。
off
禁用将请求发送给下一个服务器的功能。
需要了解的是,传给下一个服务器只有在没返回客户端任何数据时可用。也就是说,如果错误或超时发生在传输响应中间,不能修复这个问题。
该指令同时定义了与服务器通信的不成功尝试。error、timeout和invalid_header总会被认为是不成功的尝试,即使它们没有在指令中定义。http_500和http_503只有在指令中定义时才会认为是不成功的尝试。http_403和http_404从不会认为是不成功的尝试。
scgi_next_upstream_timeout
语法:scgi_next_upstream_timeout time
默认:scgi_next_upstream_timeout 0
上下文:http, server, location
版本:1.7.5+
限制一个时间,在此期间请求可以传给下一个服务器。0值关闭这个限制。
scgi_next_upstream_tries
语法:scgi_next_upstream_tries number
默认:scgi_next_upstream_tries 0
上下文:http, server, location
版本:1.7.5+
限制尝试传递请求到下一个服务器的次数。0值关闭这个限制。
scgi_no_cache
语法:scgi_no_cache string …
默认:—
上下文:http, server, location
定义哪些条件下响应不会被缓存。如果string参数至少有一个非空且不等于“0”的值,则响应不会缓存:
scgi_no_cache $cookie_nocache $arg_nocache$arg_comment;
scgi_no_cache $http_pragma $http_authorization;
可以与scgi_cache_bypass指令一同使用。
scgi_param
语法:scgi_param parameter value [if_not_empty]
默认:—
上下文:http, server, location
设置应该传给SCGI服务器的参数。值可以包含文本、变量及它们的混合。这些指令当且仅当本等级中没有scgi_param指令定义时会继承自上一个等级。
标准的CGI环境变量会作为SCGI的头给出,参见scgi_params文件:
location / {
include scgi_params;
...
}
如果指令定义了if_not_empty(1.1.11+),那么这个参数只有在非空的情况下会传给服务器:
scgi_param HTTPS $https if_not_empty;
scgi_pass
语法:scgi_pass address
默认:—
上下文:location, if in location
设置SCGI服务器的地址。地址可以定义为域名或IP地址和端口号:
scgi_pass localhost:9000;
或是一个UNIX-domain socket路径:
scgi_pass unix:/tmp/scgi.socket;
如果域名解析成多个地址,所有的地址会通过轮询的方式使用。地址可以定义为服务器组。
scgi_pass_header
语法:scgi_pass_header field
默认:—
上下文:http, server, location
允许传递被禁用的头域到客户端。
scgi_pass_request_body
语法:scgi_pass_request_body on | off
默认:scgi_pass_request_body on
上下文:http, server, location
指示原始请求体是否会传给SCGI服务器。参见scgi_pass_request_headers指令。
scgi_pass_request_headers
语法:scgi_pass_request_headers on | off
默认:scgi_pass_request_headers on
上下文:http, server, location
指示原始请求头是否传给SCGI服务器。参见scgi_pass_request_body指令。
scgi_read_timeout
语法:scgi_read_timeout time
默认:scgi_read_timeout 60s
上下文:http, server, location
定义从SCGI服务器读取响应的超时时间。超时时间为两次成功的读操作的时间,而不是整个响应的传输。如果在这期间SCGI服务器没有发送任何数据,连接将被关闭。
scgi_request_buffering
语法:scgi_request_buffering on | off
默认:scgi_request_buffering on
上下文:http, server, location
版本:1.7.11+
启用或禁用客户端请求体缓冲区。
当缓冲区启用时,整个请求体会先读取到缓冲区中,然后发送给SCGI服务器。
当缓冲区禁用时,请求体达到后会立即传给SCGI服务器。这种情况下,如果nginx已经发送请求体,请求就不能传给下一个服务器。
当HTTP1.1 chunked传输用来传输原始请求体,请求体会被缓冲不管指令的值。
scgi_send_timeout
语法:scgi_send_timeout time
默认:scgi_send_timeout 60s
上下文:http, server, location
设置传输请求到SCGI服务器的超时时间。超时时间为两次成功的写操作之间,不是整个请求传输。如果在此期间SCGI服务器没有收到任何数据,连接将被关闭。
scgi_store
语法:scgi_store on | off | string
默认:scgi_store off
上下文:http, server, location
开启将文件保存到磁盘功能。on参数保存文件到alias或root指令对应的路径下。off参数禁用保存文件。文件名可以使用string带变量:
scgi_store /data/www$original_uri;
修改时间是根据响应头中“Last-Modified”字段设置。响应首先写入到临时文件,然后重命名。从0.8.9版本开始临时文件和持久化文件可以放在不同的文件系统上。但是,需要知道的是,这种情况下文件会在两个文件系统中复制,而不是代价低的重命名操作。因此建议同时给出保存文件的位置和存放临时文件的目录位置,并放在同一个文件系统上。
这个指令可以用于创建静态不变的文件副本,例如:
location /images/ {
root /data/www;
error_page 404 = /fetch$uri;
}
location /fetch/ {
internal;
scgi_pass backend:9000;
...
scgi_store on;
scgi_store_access user:rw group:rw all:r;
scgi_temp_path /data/temp;
alias /data/www/;
}
scgi_store_access
语法:scgi_store_access users:permissions …
默认:scgi_store_access user:rw
上下文:http, server, location
设置新创建的文件和目录的访问权限,例如:
scgi_store_access user:rw group:rw all:r;
如果group或all的访问权限指定了,那么user的权限可以忽略:
scgi_store_access group:rw all:r;
scgi_temp_file_write_size
语法:scgi_temp_file_write_size size
默认:scgi_temp_file_write_size 8k|16k
上下文:http, server, location
当SCGI服务器响应缓冲区到临时文件功能启用时,限制每次写入临时文件的数据大小。默认情况下,大小由scgi_buffer_size和scgi_buffers指令设置的两个缓冲区限制。最大的临时文件大小由scgi_max_temp_file_size指令设置。
scgi_temp_path
语法:scgi_temp_path path [level1 [level2 [level3]]]
默认:scgi_temp_path scgi_temp
上下文:http, server, location
定义一个保存从SCGI服务器收到的数据的临时文件的目录。最多可以使用三层子目录层级指定目录。例如下面的配置
scgi_temp_path /spool/nginx/scgi_temp 1 2;
临时文件类似于:
/spool/nginx/scgi_temp/7/45/00000123457
参见scgi_cache_path指令的use_temp_path参数。