模块 ngx_http_scgi_module



scgi_bind scgi_buffer_size

scgi_buffering
scgi_buffers scgi_busy_buffers_size

scgi_cache_background_update scgi_cache

scgi_cache_bypass
scgi_cache_key scgi_

cache_lock scgi_cache_lock_age scgi_cache_lock_timeout

scgi_cache_max_range_offset
scgi_cache_methods scgi_cache_min_uses

scgi_cache_path
scgi_cache_purge
scgi_cache_revalidate
scgi_cache_use_stale

scgi_cache_valid scgi_connect_timeout
scgi_force_ranges
scgi_hide_header
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_socket_keepalive
scgi_store scgi_store_access

scgi_temp_file_write_size
scgi_temp_path

该模块允许将 请求。ngx_http_scgi_module

示例配置

location / {
    include   scgi_params;
    scgi_pass localhost:9000;
}

Directives

语法: scgi_bind address [transparent] | off;
默认值:
上下文: http, ,serverlocation

使到 SCGI 服务器的传出连接产生 从具有可选端口 (1.11.2) 的指定本地 IP 地址。 参数值可以包含变量 (1.3.12)。 特殊值 (1.3.12) 取消 effect Directives 继承自之前的配置级别,这允许 系统自动分配本地 IP 地址和端口。offscgi_bind

参数 (1.11.0) 允许 到 SCGI 服务器的传出连接源自 来自非本地 IP 地址, 例如,从客户端的真实 IP 地址:transparent

scgi_bind $remote_addr transparent;

为了使此参数起作用, 通常需要使用超级用户权限运行 nginx 工作进程。 在 Linux 上,它不是必需的 (1.13.8),就像 参数为 Worker processes 从 master 进程继承能力。 还需要配置内核路由表 拦截来自 SCGI 服务器的网络流量。transparentCAP_NET_RAW

语法: scgi_buffer_size size;
默认值:
scgi_buffer_size 4k|8k;
上下文: http, ,serverlocation

设置用于读取第一部分的缓冲区 从 SCGI 服务器收到的响应中。 此部分通常包含一个较小的响应标头。 默认情况下,缓冲区大小等于一个内存页。 这是 4K 或 8K,具体取决于平台。 但是,它可以做得更小。size

语法: scgi_buffering on | off;
默认值:
scgi_buffering on;
上下文: http, ,serverlocation

启用或禁用来自 SCGI 服务器的响应缓冲。

启用缓冲后,nginx 会收到来自 SCGI 服务器的响应 尽快将其保存到 scgi_buffer_sizescgi_buffers Directives设置的缓冲区中。 如果整个响应无法放入内存,则可以保存其中的一部分 添加到磁盘上的临时文件。 写入临时文件由 scgi_max_temp_file_sizescgi_temp_file_write_size Directives控制。

禁用缓冲时,响应将同步传递给客户端。 收到后立即。 nginx 不会尝试从 SCGI 服务器读取整个响应。 nginx 可以从服务器接收的最大数据大小 由 scgi_buffer_size Directives设置。

缓冲也可以通过传递 “” 或 “” 在 “X-Accel-Buffering” 响应标头字段。 可以使用 scgi_ignore_headers Directives禁用此功能。yesno

语法: scgi_buffers number size;
默认值:
scgi_buffers 8 4k|8k;
上下文: http, ,serverlocation

设置 用于从 SCGI 服务器读取响应的缓冲区, 对于单个连接。 默认情况下,缓冲区大小等于一个内存页。 这是 4K 或 8K,具体取决于平台。numbersize

语法: scgi_busy_buffers_size size;
默认值:
scgi_busy_buffers_size 8k|16k;
上下文: http, ,serverlocation

缓冲来自 SCGI 的响应时 server 启用时,限制 可以忙于向客户端发送响应,而响应不是 但已充分阅读。 同时,其余的缓冲区可用于读取响应 如果需要,缓冲对临时文件的响应的一部分。 默认情况下,受 scgi_buffer_sizescgi_buffers Directives设置的两个缓冲区大小的限制。sizesize

语法: scgi_cache zone | off;
默认值:
scgi_cache off;
上下文: http, ,serverlocation

定义用于缓存的共享内存区域。 同一区域可以在多个地方使用。 参数值可以包含变量 (1.7.9)。 该参数禁用继承的缓存 从上一个配置级别开始。off

语法: scgi_cache_background_update on | off;
默认值:
scgi_cache_background_update off;
上下文: http, ,serverlocation

该Directives出现在版本 1.11.10 中。

允许启动后台子请求 要更新过期的缓存项, 而过时的缓存响应将返回给客户端。 请注意,在更新时,必须允许使用过时的缓存响应。

语法: scgi_cache_bypass string ...;
默认值:
上下文: http, ,serverlocation

定义不从缓存中获取响应的条件。 如果字符串参数的至少一个值不为空且不为空 等于 “0”,则不会从缓存中获取响应:

scgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
scgi_cache_bypass $http_pragma    $http_authorization;

可以与 scgi_no_cache Directives一起使用。

语法: scgi_cache_key string;
默认值:
上下文: http, ,serverlocation

定义用于缓存的键,例如

scgi_cache_key localhost:9000$request_uri;

语法: scgi_cache_lock on | off;
默认值:
scgi_cache_lock off;
上下文: http, ,serverlocation

该Directives出现在版本 1.1.12 中。

启用后,一次只允许填充一个请求 根据 scgi_cache_key Directives通过向 SCGI 服务器传递请求来标识的新缓存元素。 同一 cache 元素的其他请求将等待 以将响应显示在缓存中,或者 此元素,直到 scgi_cache_lock_timeout Directives设置的时间。

语法: scgi_cache_lock_age time;
默认值:
scgi_cache_lock_age 5s;
上下文: http, ,serverlocation

该Directives出现在版本 1.7.8 中。

如果最后一个请求传递给 SCGI 服务器 用于填充新的 cache 元素 未完成指定的 , 可以向 SCGI 服务器传递另一个请求。time

语法: scgi_cache_lock_timeout time;
默认值:
scgi_cache_lock_timeout 5s;
上下文: http, ,serverlocation

该Directives出现在版本 1.1.12 中。

设置 scgi_cache_lock 的超时。 当 过期时, 请求将传递到 SCGI 服务器, 但是,不会缓存响应。time

在 1.7.8 之前,可以缓存响应。

语法: scgi_cache_max_range_offset number;
默认值:
上下文: http, ,serverlocation

该Directives出现在版本 1.11.6 中。

设置字节范围请求的偏移量(以字节为单位)。 如果范围超出偏移量,则 范围请求将传递到 SCGI 服务器 并且不会缓存响应。

语法: scgi_cache_methods GET | HEAD | POST ...;
默认值:
scgi_cache_methods GET HEAD;
上下文: http, ,serverlocation

如果此Directives中列出了 client 请求方法,则 响应将被缓存。 “” 和 “” 方法始终为 添加到列表中,但建议明确指定它们。 另请参见 scgi_no_cache Directives。GETHEAD

语法: scgi_cache_min_uses number;
默认值:
scgi_cache_min_uses 1;
上下文: http, ,serverlocation

设置响应之后的请求数 将被缓存。number

语法: scgi_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [min_free=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
默认值:
上下文: http

设置缓存的路径和其他参数。 缓存数据存储在文件中。 缓存中的文件名是 将 MD5 函数应用于缓存键。 该参数定义缓存的层次结构级别: 从 1 到 3,每个级别接受值 1 或 2。 例如,在以下配置levels

scgi_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;

缓存中的文件名将如下所示:

/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c

缓存的响应首先写入临时文件 ,然后重命名文件。 从 0.8.9 版本开始,可以放置临时文件和缓存 不同的文件系统。 但是,请注意,在这种情况下,文件会被复制 跨两个文件系统,而不是廉价的重命名作。 因此,建议对于任何给定位置,缓存和目录 保存临时文件 放在同一个文件系统上。 临时文件的目录是根据 参数 (1.7.10)。 如果省略此参数或将其设置为值 , scgi_temp_path Directives设置的目录 。 如果该值设置为 , 临时文件将直接放在 cache 目录中。use_temp_pathonoff

此外,所有活动密钥和有关数据的信息都会被存储 在共享内存区域中,其 和 由参数配置。 1 MB 区域可以存储大约 8000 个密钥。namesizekeys_zone

作为商业订阅的一部分, 共享内存区域还存储扩展的 缓存信息, 因此,需要为相同数量的键指定更大的区域大小。 例如 1 MB 区域可以存储大约 4000 个密钥。

在参数指定的时间内未访问的缓存数据将从缓存中删除 不管它们的新鲜度如何。 默认情况下,设置为 10 分钟。inactiveinactive

特殊的 “cache manager” 进程监控设置的最大缓存大小 通过参数, 和设置的最小可用空间量 通过 (1.19.1) 参数 在具有缓存的文件系统上。 当超出大小或没有足够的可用空间时, 它会删除最近最少使用的数据。 数据将在 、 和 参数 (1.11.5) 配置的迭代中删除。 在一次迭代期间,不超过 items 将被删除(默认情况下为 100)。 一次迭代的持续时间受参数限制(默认情况下为 200 毫秒)。 在迭代之间,将进行参数配置的暂停(默认为 50 毫秒)。max_sizemin_freemanager_filesmanager_thresholdmanager_sleepmanager_filesmanager_thresholdmanager_sleep

启动一分钟后,特殊的 “cache loader” 进程被激活。 它加载有关以前缓存在文件系统上的数据的信息 到缓存区中。 加载也是在迭代中完成的。 在一次迭代期间,不超过 items 被加载(默认情况下为 100)。 此外,一次迭代的持续时间受参数限制(默认情况下为 200 毫秒)。 在迭代之间,将进行参数配置的暂停(默认为 50 毫秒)。loader_filesloader_thresholdloader_sleep

此外 以下参数作为我们商业订阅的一部分提供:

purger=on|off
指示高速缓存清除程序 (1.7.12) 是否将从磁盘中删除与通配符键匹配的高速缓存条目。 将参数设置为 (default is ) 将激活 “Cache purger” 进程,该进程 永久迭代所有缓存条目 并删除与通配符键匹配的条目。onoff
purger_files=number
设置在一次迭代 (1.7.12) 期间将扫描的项目数。 默认情况下,设置为 10。purger_files
purger_threshold=number
设置一次迭代的持续时间 (1.7.12)。 默认情况下,设置为 50 毫秒。purger_threshold
purger_sleep=number
设置迭代之间的暂停 (1.7.12)。 默认情况下,设置为 50 毫秒。purger_sleep

在版本 1.7.3、1.7.7 和 1.11.10 中,缓存标头格式已更改。 以前缓存的响应将被视为无效 升级到较新的 nginx 版本后。

语法: scgi_cache_purge string ...;
默认值:
上下文: http, ,serverlocation

该Directives出现在版本 1.5.7 中。

定义将请求视为缓存的条件 purge 请求。 如果字符串参数的至少一个值不为空且不相等 设置为 “0”,则删除具有相应缓存键的缓存条目。 作成功的结果通过返回 204 (No Content) 响应。

如果清除请求的缓存键结束 替换为星号 (“”) 时,所有与 通配符键将从缓存中删除。 但是,这些条目将保留在磁盘上,直到它们被删除 对于不活动, 或由缓存清除程序 (1.7.12) 处理, 或客户端尝试访问它们。*

配置示例:

scgi_cache_path /data/nginx/cache keys_zone=cache_zone:10m;

map $request_method $purge_method {
    PURGE   1;
    default 0;
}

server {
    ...
    location / {
        scgi_pass        backend;
        scgi_cache       cache_zone;
        scgi_cache_key   $uri;
        scgi_cache_purge $purge_method;
    }
}

此功能作为我们商业订阅的一部分提供。

语法: scgi_cache_revalidate on | off;
默认值:
scgi_cache_revalidate off;
上下文: http, ,serverlocation

该Directives出现在版本 1.5.7 中。

使用条件请求启用过期缓存项目的重新验证 “If-Modified-Since”和“If-None-Match” header 字段。

语法: scgi_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_503 | http_403 | http_404 | http_429 | off ...;
默认值:
scgi_cache_use_stale off;
上下文: http, ,serverlocation

确定在哪些情况下可以使用过时的缓存响应 在与 SCGI 服务器通信期间发生错误时。 该Directives的参数与 scgi_next_upstream Directives的参数匹配。

该参数还允许 如果 SCGI 服务器处理请求,则使用过时的缓存响应 无法选择。error

此外,该参数允许 使用过时的缓存响应(如果当前正在更新)。 这允许最大限度地减少对 SCGI 服务器的访问次数 更新缓存数据时。updating

使用过时的缓存响应 也可以直接在响应标头中启用 在响应变得过时 (1.11.10) 后的指定秒数内。 这比使用 directive 参数的优先级低。

  • 这 “stale-while-revalidate” “Cache-Control” 标头字段的扩展允许 使用过时的缓存响应(如果当前正在更新)。
  • 这 “stale-if-error” “Cache-Control” 标头字段的扩展允许 在出现错误时使用过时的缓存响应。

为了最大限度地减少对 SCGI 服务器的访问次数,当 填充新的 cache 元素时,可以使用 scgi_cache_lock Directives。

语法: scgi_cache_valid [code ...] time;
默认值:
上下文: http, ,serverlocation

为不同的响应代码设置缓存时间。 例如,以下Directives

scgi_cache_valid 200 302 10m;
scgi_cache_valid 404      1m;

为代码为 200 和 302 的响应设置 10 分钟的缓存 对于代码为 404 的响应,则为 1 分钟。

如果仅指定了缓存time

scgi_cache_valid 5m;

然后,仅缓存 200、301 和 302 个响应。

此外,还可以指定 要缓存任何响应:any

scgi_cache_valid 200 302 10m;
scgi_cache_valid 301      1h;
scgi_cache_valid any      1m;

缓存参数也可以直接设置 在响应标头中。 这比使用Directives设置缓存时间具有更高的优先级。

  • “X-Accel-Expires” 标头字段设置 响应。 零值禁用响应的缓存。 如果该值以 prefix 开头,则设置绝对值 time (以秒为单位) since Epoch,响应可以缓存到该时间。@
  • 如果标头不包含 “X-Accel-Expires” 字段, 缓存的参数可以在 Header 字段中设置 “过期”或“缓存控制”。
  • 如果标头包含 “Set-Cookie” 字段,则此类 响应不会被缓存。
  • 如果标题包含 “Vary” 字段 替换为特殊值 “”,则此类 响应不会被缓存 (1.7.7)。 如果标题包含 “Vary” 字段 替换为另一个值,则将缓存此类响应 考虑相应的请求标头字段 (1.7.7)。*

可以禁用对这些响应标头字段中的一个或多个的处理 使用 scgi_ignore_headers Directives。

语法: scgi_connect_timeout time;
默认值:
scgi_connect_timeout 60s;
上下文: http, ,serverlocation

定义与 SCGI 服务器建立连接的超时。 应该注意,此超时通常不能超过 75 秒。

语法: scgi_force_ranges on | off;
默认值:
scgi_force_ranges off;
上下文: http, ,serverlocation

该Directives出现在版本 1.7.7 中。

启用字节范围支持 对于来自 SCGI 服务器的缓存和未缓存响应 无论这些响应中的“Accept-Ranges”字段如何。

语法: scgi_hide_header field;
默认值:
上下文: http, ,serverlocation

默认情况下, nginx 不传递标头字段 “Status” 和 “X-Accel-...”来自 SCGI 的响应 server 设置为客户端。 该Directives设置其他字段 这不会被通过。 相反,如果需要允许传递字段, 可以使用 scgi_pass_header Directives。scgi_hide_header

语法: scgi_ignore_client_abort on | off;
默认值:
scgi_ignore_client_abort off;
上下文: http, ,serverlocation

确定与 SCGI 服务器的连接是否应为 closed 当客户端关闭连接而不等待 以获取响应。

语法: scgi_ignore_headers field ...;
默认值:
上下文: http, ,serverlocation

禁用对 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)、“过期”、 “cache-control”, “set-cookie” (0.8.44), 和“变化”(1.7.7)。

如果未禁用,则这些标头字段的处理将如下所示 影响:

  • “X-Accel-Expires”、“Expires”、 “缓存控制”、“设置cookie”、 和“Vary” 设置响应缓存的参数;
  • “X-Accel-Redirect” 执行internal 重定向到指定的 URI;
  • “X-Accel-Limit-Rate” 设置速率 限制向客户传输响应;
  • “X-Accel-Buffering” 启用或禁用响应的缓冲;
  • “X-Accel-Charset” 设置响应的所需字符集

语法: scgi_intercept_errors on | off;
默认值:
scgi_intercept_errors off;
上下文: http, ,serverlocation

确定 SCGI 服务器是否使用大于或等于代码的响应 到 300 应传递给客户端 或者被拦截并重定向到 nginx 进行处理 替换为 error_page Directives。

语法: scgi_limit_rate rate;
默认值:
scgi_limit_rate 0;
上下文: http, ,serverlocation

该Directives出现在版本 1.7.7 中。

限制从 SCGI 服务器读取响应的速度。 以每秒字节数为单位指定。 零值将禁用速率限制。 限制是按请求设置的,因此如果 nginx 同时打开 与 SCGI 服务器的两个连接, 总速率将是指定限制的两倍。 仅当缓冲来自 SCGI 的响应时,此限制才有效 服务器已启用。 参数值可以包含变量 (1.27.0)。rate

语法: scgi_max_temp_file_size size;
默认值:
scgi_max_temp_file_size 1024m;
上下文: http, ,serverlocation

缓冲来自 SCGI 的响应时 server 已启用,并且整个响应不适合缓冲区 由 scgi_buffer_sizescgi_buffers Directives设置,响应的一部分可以保存到临时文件中。 该Directives设置临时文件的最大值。 设置一次写入临时文件的数据大小 通过 scgi_temp_file_write_size Directives。size

零值禁用对临时文件的响应缓冲。

此限制不适用于响应 将被缓存存储在磁盘上。

语法: scgi_next_upstream error | timeout | invalid_header | http_500 | http_503 | http_403 | http_404 | http_429 | non_idempotent | off ...;
默认值:
scgi_next_upstream error timeout;
上下文: http, ,serverlocation

指定在哪些情况下应将请求传递到下一个服务器:

error
与 server、向其传递请求或读取响应标头;
timeout
与 server、向其传递请求或读取响应标头;
invalid_header
服务器返回空响应或无效响应;
http_500
服务器返回代码为 500 的响应;
http_503
服务器返回代码为 503 的响应;
http_403
服务器返回代码为 403 的响应;
http_404
服务器返回代码为 404 的响应;
http_429
服务器返回代码为 429 (1.11.13) 的响应;
non_idempotent
通常,使用非幂等方法的请求 (, , ) 不会传递到下一个服务器 如果请求已发送到上游服务器 (1.9.13); 启用此选项明确允许重试此类请求;POSTLOCKPATCH
off
禁止将请求传递到下一个服务器。

应该记住,将请求传递给下一个服务器是 仅当尚未向客户端发送任何内容时才有可能。 也就是说,如果在 传输响应,则无法修复此问题。

该Directives还定义了什么被视为不成功 尝试与服务器通信。 的情况 , 和 始终被视为不成功的尝试, 即使它们未在Directives中指定。 、 、 并且是 仅当在Directives中指定了尝试时,才被视为不成功的尝试。 和 的情况从不被视为不成功的尝试。errortimeoutinvalid_headerhttp_500http_503http_429http_403http_404

将请求传递到下一个服务器可能会受到尝试次数时间的限制。

语法: scgi_next_upstream_timeout time;
默认值:
scgi_next_upstream_timeout 0;
上下文: http, ,serverlocation

该Directives出现在版本 1.7.5 中。

限制可以将请求传递到下一个服务器的时间。 该值会关闭此限制。0

语法: scgi_next_upstream_tries number;
默认值:
scgi_next_upstream_tries 0;
上下文: http, ,serverlocation

该Directives出现在版本 1.7.5 中。

限制将请求传递到下一个服务器的可能尝试次数。 该值会关闭此限制。0

语法: scgi_no_cache string ...;
默认值:
上下文: http, ,serverlocation

定义不将响应保存到缓存的条件。 如果字符串参数的至少一个值不为空且不为空 等于 “0”,则不会保存响应:

scgi_no_cache $cookie_nocache $arg_nocache$arg_comment;
scgi_no_cache $http_pragma    $http_authorization;

可以与 scgi_cache_bypass Directives一起使用。

语法: scgi_param parameter value [if_not_empty];
默认值:
上下文: http, ,serverlocation

设置应传递给 SCGI 服务器的 a。 可以包含文本、变量及其组合。 这些Directives继承自之前的配置级别 当且仅当没有Directives时 在当前级别上定义。parametervaluescgi_param

标准 CGI 环境变量应作为 SCGI 标头提供,请参阅文件 在分发中提供:scgi_params

location / {
    include scgi_params;
    ...
}

如果Directives使用 (1.1.11) 指定,则 仅当其值不为空时,此类参数才会传递给服务器:if_not_empty

scgi_param HTTPS $https if_not_empty;

语法: scgi_pass address;
默认值:
上下文: location,if in location

设置 SCGI 服务器的地址。 地址可以指定为域名或 IP 地址, 和一个端口:

scgi_pass localhost:9000;

或作为 UNIX 域套接字路径:

scgi_pass unix:/tmp/scgi.socket;

如果一个域名解析为多个地址,则所有地址都将是 以循环方式使用。 此外,还可以将地址指定为服务器组

Parameter value 可以包含变量。 在这种情况下,如果将地址指定为域名, 在描述的服务器组中搜索名称, 如果未找到,则使用解析程序确定。

语法: scgi_pass_header field;
默认值:
上下文: http, ,serverlocation

允许传递否则禁用的标头 字段从 SCGI 服务器传输到客户端。

语法: scgi_pass_request_body on | off;
默认值:
scgi_pass_request_body on;
上下文: http, ,serverlocation

指示是否传递原始请求正文 到 SCGI 服务器。 另请参见 scgi_pass_request_headers Directives。

语法: scgi_pass_request_headers on | off;
默认值:
scgi_pass_request_headers on;
上下文: http, ,serverlocation

指示是否传递原始请求的标头字段 到 SCGI 服务器。 另请参见 scgi_pass_request_body Directives。

语法: scgi_read_timeout time;
默认值:
scgi_read_timeout 60s;
上下文: http, ,serverlocation

定义从 SCGI 服务器读取响应的超时。 超时仅在两个连续的读取作 ( 而不是为了传输整个响应。 如果 SCGI 服务器在此时间内没有传输任何内容, 连接已关闭。

语法: scgi_request_buffering on | off;
默认值:
scgi_request_buffering on;
上下文: http, ,serverlocation

该Directives出现在版本 1.7.11 中。

启用或禁用客户端请求正文的缓冲。

启用缓冲后,在将请求发送到 SCGI 服务器之前,将从客户端读取整个请求正文。

禁用缓冲后,请求正文将发送到 SCGI 服务器 收到后立即。 在这种情况下,如果 nginx 已经开始发送请求正文,则无法将请求传递到下一个服务器

使用 HTTP/1.1 分块传输编码时 要发送原始请求正文, 无论 Directive 值如何,请求正文都将被缓冲。

语法: scgi_send_timeout time;
默认值:
scgi_send_timeout 60s;
上下文: http, ,serverlocation

设置将请求传输到 SCGI 服务器的超时。 超时仅在两个连续的写入作 ( 而不是为了传输整个请求。 如果 SCGI 服务器在此时间内未收到任何内容,则 连接已关闭。

语法: scgi_socket_keepalive on | off;
默认值:
scgi_socket_keepalive off;
上下文: http, ,serverlocation

该Directives出现在版本 1.15.6 中。

配置 “TCP keepalive” 行为 用于 SCGI 服务器的传出连接。 默认情况下,作系统的设置对套接字有效。 如果Directives设置为值 “”,则为套接字打开套接字选项。onSO_KEEPALIVE

语法: scgi_store on | off | string;
默认值:
scgi_store off;
上下文: http, ,serverlocation

允许将文件保存到磁盘。 该参数使用路径保存文件 对应于Directives aliasroot。 该参数禁用文件保存。 此外,可以使用 with 变量显式设置文件名:onoffstring

scgi_store /data/www$original_uri;

根据收到的 “Last-Modified” 响应标头字段。 响应首先被写入临时文件 ,然后重命名文件。 从版本 0.8.9 开始,临时文件和持久化存储 可以放在不同的文件系统上。 但是,请注意,在这种情况下,文件会被复制 跨两个文件系统,而不是廉价的重命名作。 因此,建议对于任何给定位置,保存的文件和 目录保存临时文件(由 scgi_temp_path Directives设置)放在同一个文件系统上。

此Directives可用于创建 static unchangeable 的本地副本 文件,例如:

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 users:permissions ...;
默认值:
scgi_store_access user:rw;
上下文: http, ,serverlocation

为新创建的文件和目录设置访问权限,例如:

scgi_store_access user:rw group:rw all:r;

如果有 或 访问权限 ,则权限可以省略:groupalluser

scgi_store_access group:rw all:r;

语法: scgi_temp_file_write_size size;
默认值:
scgi_temp_file_write_size 8k|16k;
上下文: http, ,serverlocation

限制写入临时文件的数据 在缓冲来自 SCGI 服务器的响应时 到临时文件。 默认情况下,受 scgi_buffer_sizescgi_buffers Directives设置的两个缓冲区的限制。 临时文件的最大大小由 scgi_max_temp_file_size Directives设置。sizesize

语法: scgi_temp_path path [level1 [level2 [level3]]];
默认值:
scgi_temp_path scgi_temp;
上下文: http, ,serverlocation

定义用于存储临时文件的目录 使用从 SCGI 服务器接收的数据。 在指定的 目录。 例如,在以下配置

scgi_temp_path /spool/nginx/scgi_temp 1 2;

临时文件可能如下所示:

/spool/nginx/scgi_temp/7/45/00000123457

另请参见 scgi_cache_path Directives的 parameter。use_temp_path