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

本文档包含以下指令:uwsgi_ignore_client_abort、uwsgi_ignore_headers、uwsgi_intercept_errors、uwsgi_limit_rate、uwsgi_max_temp_file_size、uwsgi_modifier1、uwsgi_modifier2、uwsgi_next_upstream、uwsgi_next_upstream_timeout、uwsgi_next_upstream_tries、uwsgi_no_cache、uwsgi_param、uwsgi_pass、uwsgi_pass_header、uwsgi_pass_request_body、uwsgi_pass_request_headers、uwsgi_read_timeout、uwsgi_request_buffering、uwsgi_send_timeout、uwsgi_ssl_certificate、uwsgi_ssl_certificate_key、uwsgi_ssl_ciphers、uwsgi_ssl_crl、uwsgi_ssl_name、uwsgi_ssl_password_file、uwsgi_ssl_protocols、uwsgi_ssl_server_name、uwsgi_ssl_session_reuse、uwsgi_ssl_trusted_certificate、uwsgi_ssl_verify、uwsgi_ssl_verify_depth、uwsgi_store、uwsgi_store_access、uwsgi_temp_file_write_size、uwsgi_temp_path

uwsgi_ignore_client_abort

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

决定在客户端没有等待响应就关闭连接时,与uwsgi服务器的连接是否需要关闭。

uwsgi_ignore_headers

语法:uwsgi_ignore_headers field
默认:—
上下文:http, server, location

禁用处理从uwsgi服务器响应的头域。以下字段可以被忽略:“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”设置希望响应的字符编码

uwsgi_intercept_errors

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

决定在uwsgi服务器响应的状态码大于等于300时,应该传给客户端还是重定向到nginx使用error_page指令处理。

uwsgi_limit_rate

语法:uwsgi_limit_rate rate
默认:uwsgi_limit_rate 0
上下文:http, server, location
版本:1.7.7+

限制从uwsgi服务器读取响应的速度。限速指定为字节每秒。零值禁用限速。限制针对一个请求,如果nginx同时打开两个连接到uwsgi服务器,整体速率将会使指定限制的两倍。限制只有在启用uwsgi服务器响应缓冲区时可用。

uwsgi_max_temp_file_size

语法:uwsgi_max_temp_file_size size
默认:uwsgi_max_temp_file_size 1024m
上下文:http, server, location

当从uwsgi服务器的响应缓冲区启用并且整体响应不能放到uwsgi_buffer_size和uwsgi_buffers指令设置的缓冲区中时,一部分响应可以保存到临时文件中。指令限制了临时文件的最大大小。一次写入到临时文件的数据大小由uwsgi_temp_file_write_size指令设置。
零值禁用缓冲区到临时文件功能。
这个限制不能应用在将要缓存或保存到磁盘上的响应。

uwsgi_modifier1

语法:uwsgi_modifier1 number
默认:uwsgi_modifier1 0
上下文:http, server, location

设置uwsgi包头中的modifier1字段值。

uwsgi_modifier2

语法:uwsgi_modifier2 number
默认:uwsgi_modifier2 0
上下文:http, server, location

设置uwsgi包头中的uwsgi_modifier2字段值。

uwsgi_next_upstream

语法:uwsgi_next_upstream error | timeout | invalid_header | http_500 | http_503 | http_403 | http_404 | non_idempotent | off …
默认:uwsgi_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从不会被视为不成功的尝试。
传递请求到下一个服务器可以由尝试次数和时间限制。

uwsgi_next_upstream_timeout

语法:uwsgi_next_upstream_timeout time
默认:uwsgi_next_upstream_timeout 0
上下文:http, server, location
版本:1.7.5+

限制一个时间,在这个期间请求可以传给下一个服务器。0值关闭这个限制。

uwsgi_next_upstream_tries

语法:uwsgi_next_upstream_tries number
默认:uwsgi_next_upstream_tries 0
上下文:http, server, location
版本:1.7.5+

限制可能尝试传递请求给下一个服务器的次数。0值禁用这个限制。

uwsgi_no_cache

语法:uwsgi_no_cache string
默认:—
上下文:http, server, location

定义哪种情况下响应不会保存到缓存。如果string参数至少有一个是非“0”非空字符串,响应不会缓存:

uwsgi_no_cache $cookie_nocache $arg_nocache$arg_comment;
uwsgi_no_cache $http_pragma    $http_authorization;

可以与uwsgi_cache_bypass指令一同使用。

uwsgi_param

语法:uwsgi_param parameter value [if_not_empty]
默认:—
上下文:http, server, location

设置需要传给uwsgi服务器的参数。值可以包含文本、变量以及它们的混合。这些指令当且仅当当前等级中没有uwsgi_param指令定义时才会继承自上次指令。
标准CGI环境变量应该作为uwsgi头提供,查阅uwsgi_params文件:

location / {
    include uwsgi_params;
    ...
}

如果指令指定了if_not_empty(1.1.11+)参数,那么这个参数将在值不空的时候传递给服务器:
uwsgi_param HTTPS $https if_not_empty;

uwsgi_pass

语法:uwsgi_pass [protocol://]address
默认:—
上下文:location, if in location

设置uwsgi服务器的协议和地址。“uwsgi”或“suwsgi”(安全的uwsgi,在SSL层上的uwsgi)可以作为协议指定。地址可以指定为域名或IP地址与端口号:

uwsgi_pass localhost:9000;
uwsgi_pass uwsgi://localhost:9000;
uwsgi_pass suwsgi://[2001:db8::1]:9090;

或者是一个UNIX-domain socket路径:
uwsgi_pass unix:/tmp/uwsgi.socket;
如果域名解析成多个地址,它们会通过轮询的方法使用。另外服务器可以指定为服务器组。
安全uwsgi协议从1.5.8版本开始支持。

uwsgi_pass_header

语法:uwsgi_pass_header field
默认:—
上下文:http, server, location

允许传递从uwsgi服务器被禁用的头域到客户端。

uwsgi_pass_request_body

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

指明原始请求体是否传给uwsgi服务器。参见uwsgi_pass_request_headers指令。

uwsgi_pass_request_headers

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

指明原始请求头域是否传给uwsgi服务器。参见uwsgi_pass_request_body指令。

uwsgi_read_timeout

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

定义一个超时时间,用于读取来自于uwsgi服务器的响应。超时是设置在两次成功的读操作之间,不是整个响应的传输。如果uwsgi服务器在这个时间内没有传递任何数据,连接将关闭。

uwsgi_request_buffering

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

启用或禁用客户端请求体缓冲区。
当缓冲区启用,在发送请求到uwsgi服务器之前会从客户端读取完整的请求体。
当缓冲区关闭,请求体会在收到时立即发送uwsgi服务器。这种情况下,如果nginx已经开始发送请求体,请求不能传递给下一个服务器。
当使用HTTP1.1 chunked传输编码发送原始请求体时,请求体将会被缓冲不管指令的值。

uwsgi_send_timeout

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

设置传递请求到uwsgi服务器的超时时间。超时时间只是两次成功的写请求之间,不是完整请求的传输。如果uwsgi服务器在这个时间没有收到任何数据,连接将关闭。

uwsgi_ssl_certificate

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

指定一个PEM格式的证书文件用于安全uwsgi服务器的验证。

uwsgi_ssl_certificate_key

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

指定一个PEM格式的密钥文件用于安全uwsgi服务器的验证。
可以指定engine:name:id值代替文件(1.7.9+),将从OpenSSL引擎name中加载一个指定id的密钥。

uwsgi_ssl_ciphers

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

指定安全uwsgi服务器请求可以使用的加密算法。加密算法指定为OpenSSL库可以识别的格式。
完整的列表可以使用“openssl ciphers”命令查看。

uwsgi_ssl_crl

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

指定一个PEM格式的吊销证书列表文件,用于验证安全uwsgi服务器的证书。

uwsgi_ssl_name

语法:uwsgi_ssl_name name
默认:uwsgi_ssl_name host from uwsgi_pass
上下文:http, server, location
版本:1.7.0+

允许覆盖服务器名称用于验证安全uwsgi服务器的证书,并当与安全uwsgi服务器建立连接时通过SNI传递。
默认情况下,会使用uwsgi_pass中的host部分。

uwsgi_ssl_password_file

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

指定一个文件,用于保存密钥的密码,密码指定在分开的行中。密码会在加载密钥时轮流尝试。

uwsgi_ssl_protocols

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

为安全uwsgi服务器请求启用指定协议。

uwsgi_ssl_server_name

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

启用或禁用当与安全uwsgi服务器建立连接时,通过TLS Server Name Indication扩展(SNI,RFC 6066)传递服务器名称。

uwsgi_ssl_session_reuse

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

决定当使用安全uwsgi服务器时,SSL会话是否可以重用。如果错误“SSL3_GET_FINISHED:digest check failed”出现在日志中,尝试禁用会话重用。

uwsgi_ssl_trusted_certificate

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

指定一个PEM格式的可信CA证书文件,用于验证安全uwsgi服务器的证书。

uwsgi_ssl_verify

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

启用或禁用验证安全uwsgi服务器证书。

uwsgi_ssl_verify_depth

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

设置验证安全uwsgi服务器证书链的深度。

uwsgi_store

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

启用保存文件到磁盘。on参数保存文件到alias或root指令对应的路径。off参数禁用保存文件。文件名可以用带变量的字符串:
uwsgi_store /data/www$original_uri;
文件的修改时间根据收到的响应头“Last-Modified”字段设置。响应首先写到临时文件中,然后重命名。从0.8.9版本开始,临时文件和持久化存储可以放到不同的文件系统中。但是,要知道的是,这种情况下,文件会在两个文件系统中复制,而不是更廉价的重命名操作。因此建议通过uwsgi_temp_path指令同时给出临时文件和保存文件的位置,并放到同一个文件系统上。
指令可以用于创建不更改的静态文件副本,例如:

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

location /fetch/ {
    internal;

    uwsgi_pass         backend:9000;
    ...

    uwsgi_store        on;
    uwsgi_store_access user:rw group:rw all:r;
    uwsgi_temp_path    /data/temp;

    alias              /data/www/;
}

uwsgi_store_access

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

设置新创建的文件和目录的权限,例如:
uwsgi_store_access user:rw group:rw all:r;
如果group或all的权限指定了,可以不指定user的权限:
uwsgi_store_access group:rw all:r;

uwsgi_temp_file_write_size

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

当从uwsgi服务器的缓冲区吸入到临时文件功能启用时,限制一次写人到临时文件的数据大小。默认情况下,大小受uwsgi_buffer_size和uwsgi_buffers指令设置的两个缓冲区大小限制。临时文件的最大大小由uwsgi_max_temp_file_size指令设置。

uwsgi_temp_path

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

定义一个目录用于保存从uwsgi服务器收到数据的临时文件。最多可以使用三级子目录。例如下面的配置
uwsgi_temp_path /spool/nginx/uwsgi_temp 1 2;
一个临时文件类似于:
/spool/nginx/uwsgi_temp/7/45/00000123457
参见uwsgi_cache_path指令的use_temp_path参数。

nginx中文文档-ngx_http_uwsgi_module(B-H)

本文档包含以下指令:uwsgi_bind、uwsgi_buffer_size、uwsgi_buffering、uwsgi_buffers、uwsgi_busy_buffers_size、uwsgi_cache、uwsgi_cache_bypass、uwsgi_cache_key、uwsgi_cache_lock、uwsgi_cache_lock_age、uwsgi_cache_lock_timeout、uwsgi_cache_methods、uwsgi_cache_min_uses、uwsgi_cache_path、uwsgi_cache_purge、uwsgi_cache_revalidate、uwsgi_cache_use_stale、uwsgi_cache_valid、uwsgi_connect_timeout、uwsgi_force_ranges、uwsgi_hide_header

ngx_http_uwsgi_module模块允许将请求传递给uwsgi服务器。
示例配置

location / {
    include    uwsgi_params;
    uwsgi_pass localhost:9000;
}

uwsgi_bind

语法:uwsgi_bind address [transparent] | off
默认:—
上下文:http, server, location

从指定本地IP地址向uwsgi建立外部连接。参数值可以包含变量(1.3.12+)。特殊值off(1.3.12+)取消继承自上级配置中uwsgi_bind指令的影响,允许系统自动指派本地IP地址。
transparent参数(1.11.0+)允许从非本地IP地址向uwsgi服务器建立外部连接,例如,从一个客户端的真实IP:
uwsgi_bind $remote_addr transparent;
为了使这个参数生效,需要以超级用户运行nginx工作进程,并配置内核路由表以接货来自uwsgi服务器的网络流量。

uwsgi_buffer_size

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

设置用于读取从uwsgi服务器收到的响应第一部分的缓冲区大小。这一部分通常包含一个小的响应头。默认情况下,缓冲区大小等于一页内存。这个值是4k或8k,取决于平台。但是可以设置的更小。

uwsgi_buffering

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

启用或禁用从uwsgi服务器收到响应的缓冲区。
当缓冲区启用时,nginx从uwsgi服务器收到响应后,尽快的将其保存到uwsgi_buffer_size和uwsgi_buffers指令设置的缓冲区中。如果整个响应不能放入内存,一部分可以保存到磁盘上的临时文件中。写入到临时文件由uwsgi_max_temp_file_size和uwsgi_temp_file_write_size指令控制。
当缓冲区禁用时,响应会在收到后同步的传递给客户端。nginx不会尝试从uwsgi服务器读取全部响应。每次nginx可以从服务器获取的数据大小由uwsgi_buffer_size指令设置。
缓冲区也可以通过响应头域中的“X-Accel-Buffering”的“yes”值或“no”值启用或禁用。这个功能可以使用uwsgi_ignore_headers指令禁用。

uwsgi_buffers

语法:uwsgi_buffers number size
默认:uwsgi_buffers 8 4k|8k
上下文:http, server, location

设置用于从uwsgi服务器读取响应的缓冲区数量和大小。默认情况下,缓冲区大小等于一页内存。这个值是4k或8k,取决于平台。

uwsgi_busy_buffers_size

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

当从uwsgi服务器读取响应的缓存开启,限制当响应没有完全读取时,可以发送给客户端的缓冲区总大小。与此同时,缓冲区的其余部分可以用于读取响应,如果需要,缓冲部分响应到临时文件。默认情况下,大小由uwsgi_buffer_size和uwsgi_buffers指令设置的两个缓冲区大小限制。

uwsgi_cache

语法:uwsgi_cache zone | off
默认:uwsgi_cache off
上下文:http, server, location

定义一个用于缓存的共享内存区域。相同的区域可以用在多个位置。参数值可以包含变量(1.7.9+)。参数off禁用继承自上级配置的缓存。

uwsgi_cache_bypass

语法:uwsgi_cache_bypass string
默认:—
上下文:http, server, location

定义哪些情况下响应不会从缓存中取。如果string参数至少有一个是非“0”的非空字符串,响应不会从缓存中取:

uwsgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
uwsgi_cache_bypass $http_pragma    $http_authorization;

可以与uwsgi_no_cache指令一同使用。

uwsgi_cache_key

语法:uwsgi_cache_key string
默认:—
上下文:http, server, location

定义一个缓存的关键字,例如:
uwsgi_cache_key localhost:9000$request_uri;

uwsgi_cache_lock

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

当启用时,同一时间只有一个请求可以占用一个新的缓存元素。其他的使用相同缓存元素的请求会等待响应出现在缓存中或等到由uwsgi_cache_lock_timeout指令定义的时间达到后释放这个元素的锁定。

uwsgi_cache_lock_age

语法:uwsgi_cache_lock_age time
默认:uwsgi_cache_lock_age 5s
上下文:http, server, location
版本:1.7.8+

如果最后一个传递给uwsgi服务器的请求占用一个新的缓存元素,并在指定的时间内没有完成,一个或更多的请求可以传递给uwsgi服务器。

uwsgi_cache_lock_timeout

语法:uwsgi_cache_lock_timeout time
默认:uwsgi_cache_lock_timeout 5s
上下文:http, server, location
版本:1.1.12+

为uwsgi_cache_lock设置超时时间。当这个时间过期,请求可以发送到uwsgi服务器,但是响应不会被缓存。
在1.7.8版本之前,响应会被缓存。

uwsgi_cache_methods

语法:uwsgi_cache_methods GET | HEAD | POST …
默认:uwsgi_cache_methods GET HEAD
上下文:http, server, location

如果客户端请求方式列于这个指令中,响应会被缓存。“GET”和“HEAD”方法总会被添加到列表中,推荐显式的定义他们。参见uwsgi_no_cache指令。

uwsgi_cache_min_uses

语法:uwsgi_cache_min_uses number
默认:uwsgi_cache_min_uses 1
上下文:http, server, location

设置请求的数量,超过这个数量后响应会被缓存。

uwsgi_cache_path

语法:uwsgi_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time]
默认:—
上下文:http

设置缓存的路径和其他参数。缓存数据保存在文件中。缓存中的文件名是缓存关键字MD5的结果。levels参数定义了缓存的层级。例如下面的配置
uwsgi_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
缓存中的文件名类似:
/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c
缓存的响应首先写入到临时文件,然后进行重命名。从0.8.9版本开始,临时文件和缓存可以放在不同的文件系统上。但是,需要明白的是,这种情况下文件会在两个文件系统中复制,而不是代价更小的重命名操作。因此建议同时给出缓存和放置临时文件的临时目录并放置于同一个文件系统上。临时目录基于use_temp_path参数设置(1.7.10+)。如果这个参数忽略或设置为on,将会使用uwsgi_temp_path指令设置的位置。如果值设置为off,临时文件将直接放到缓存目录中。
另外,所有活动的关键字和数据信息保存在共享内存区域中,名字和大小由keys_zone参数配置。1M的区域可以存储大约8000个关键字。
缓存数据在inactive参数指定的时间期间内没有被访问,会从缓存中移除不管它们的新鲜度。默认情况下inactive设置为10分钟。
特殊的“cache manager”进程监视max_size参数设置的最大缓存大小。当大小超过限制,会移除最近最少使用的数据。
在启动后一分钟,“cache loader”进程激活。它加载之前保存在磁盘上的缓存数据信息到缓存区域。加载过程是迭代的。每次迭代过程中不超过loader_files个项目会被载入(默认是100)。一次迭代的时长由loader_threshold参数限制(默认是200毫秒)。在迭代之间,会有由loader_sleep参数设置的暂停(默认是50毫秒)。
下面的参数在商业版可用(商业版本不进行翻译):

purger=on|off
Instructs whether cache entries that match a wildcard key will be removed from the disk by the cache purger (1.7.12). Setting the parameter to on (default is off) will activate the “cache purger” process that permanently iterates through all cache entries and deletes the entries that match the wildcard key.

purger_files=number
Sets the number of items that will be scanned during one iteration (1.7.12). By default, purger_files is set to 10.

purger_threshold=number
Sets the duration of one iteration (1.7.12). By default, purger_threshold is set to 50 milliseconds.

purger_sleep=number
Sets a pause between iterations (1.7.12). By default, purger_sleep is set to 50 milliseconds.

uwsgi_cache_purge

语法:uwsgi_cache_purge string
默认:—
上下文:http, server, location
版本:1.5.7+

定义在哪些条件下请求会被视为清除缓存请求。如果string参数只要有一个为非“0”的非空值,则相应的缓存关键字会被删除。成功的操作会返回204响应码。
如果清除缓存的关键字请求以星号(“*”)结尾,所有的缓存匹配关键字的都会移除。但是会在磁盘中保留直到被inactivity删除或cache purger(1.7.12+)处理或客户端尝试访问它们。
示例配置:

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

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

server {
    ...
    location / {
        uwsgi_pass        backend;
        uwsgi_cache       cache_zone;
        uwsgi_cache_key   $uri;
        uwsgi_cache_purge $purge_method;
    }
}

该功能在商业版本中可用。

uwsgi_cache_revalidate

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

启用对过期的缓存通过“If-Modified-Since”和“If-None-Match”条件请求头域进行重验证。

uwsgi_cache_use_stale

语法:uwsgi_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_503 | http_403 | http_404 | off …
默认:uwsgi_cache_use_stale off
上下文:http, server, location

定义在与uwsgi服务器通信发生错误时,哪些情况下陈旧的缓存响应会被使用。这个指令的参数与uwsgi_next_upstream指令匹配。
error参数在不能选择一个uwsgi服务器处理请求时也允许使用陈旧的缓存响应。
updating参数在当前缓存更新时允许使用陈旧的缓存响应。这让当更新缓存数据时,减少访问uwsgi服务器。
为了在占用一个新缓存元素时减少访问uwsgi服务器的次数,可以是用uwsgi_cache_lock指令。

uwsgi_cache_valid

语法:uwsgi_cache_valid [code …] time
默认:—
上下文:http, server, location

为不同的响应码设置缓存时间。例如,下面的指令

uwsgi_cache_valid 200 302 10m;
uwsgi_cache_valid 404      1m;

为200和302响应码设置10分钟的缓存,为404返回码设置了1分钟的缓存。
如果只有缓存时间指定了
uwsgi_cache_valid 5m;
只有200、301和302的响应会被缓存。
any参数可以指定缓存所有响应:

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

缓存的参数也可以直接在响应头中设置。这个的优先级要比指令设置的缓存时间更高。

  • “X-Accel-Expires”头域设置了缓存响应的秒数。零值禁用缓存响应。如果值以“@”前缀开头,则设置了一个从纪元开始的秒数的绝对时间,一直会缓存到这个时间。
  • 如果头中不包含“X-Accel-Expires”字段,缓存参数可能设置在“Expires”或“Cache-Control”字段中。
  • 如果头中包含“Set-Cookie”字段,响应不会被缓存。
  • 如果头中包含“Vary”字段值是 “*”,响应不会被缓存(1.7.7+)。如果头中包含“Vary”字段,值是其他值,是否缓存响应会考虑相应的请求头域(1.7.7+)。

处理一个或更多响应头域的功能可以通过uwsgi_ignore_headers指令禁用。

uwsgi_connect_timeout

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

为与uwsgi服务器建立连接定义一个超时时间。注意这个超时时间通常不超过75秒。

uwsgi_force_ranges

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

为缓存和不缓存的响应启用byte-range支持,不管响应的“Accept-Ranges”头域。

uwsgi_hide_header

语法:uwsgi_hide_header field
默认:—
上下文:http, server, location

默认情况下,nginx不会传递来自于uwsgi服务器的“Status”和“X-Accel-…”响应头域到客户端。uwsgi_hide_header指令设置了其他不会传递的字段。如果相反,需要允许传递字段,可以使用uwsgi_pass_header指令。