nginx中文文档-ngx_http_scgi_module(I-T)

本文档包含以下指令:scgi_ignore_client_abort、scgi_ignore_headers、scgi_intercept_errors、scgi_limit_rate、scgi_max_temp_file_size、scgi_next_upstream、scgi_next_upstream_timeout、scgi_next_upstream_tries、scgi_no_cache、scgi_param、scgi_pass、scgi_pass_header、scgi_pass_request_body、scgi_pass_request_headers、scgi_read_timeout、scgi_request_buffering、scgi_send_timeout、scgi_store、scgi_store_access、scgi_temp_file_write_size、scgi_temp_path

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参数。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

You must enable javascript to see captcha here!