Appearance
代理模块 ngx_http_proxy_module
提示
来自deepseek解释
这是ngx_http_proxy_module模块官方文档的完整中文翻译。该模块用于将请求转发到另一台服务器,是Nginx配置反向代理的核心模块。
模块 ngx_http_proxy_module
示例配置
nginx
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}指令
proxy_allow_upstream
- 语法:
proxy_allow_upstream string ...; - 默认值: —
- 上下文:
http, server, location - 说明: 此指令在1.29.3版本中引入。定义允许或拒绝访问代理服务器的条件。如果所有字符串参数都不为空且不等于“0”,则允许访问。在与代理服务器建立连接之前,每次都会评估条件。参数值可以包含变量。
proxy_bind
- 语法:
proxy_bind address [transparent] | off; - 默认值: —
- 上下文:
http, server, location - 说明: 此指令在0.8.22版本中引入。使到代理服务器的出站连接从指定的本地IP地址(可选择端口)发起。参数值可以包含变量。特殊值
off取消继承自上级配置级别的proxy_bind指令效果,允许系统自动分配本地IP地址和端口。transparent参数允许出站连接从非本地IP地址发起,例如从客户端的真实IP地址。为此,通常需要以超级用户权限运行nginx工作进程。在Linux上,如果指定了transparent参数,工作进程会从主进程继承CAP_NET_RAW能力。此外,还需要配置内核路由表以拦截来自代理服务器的网络流量。
proxy_bind_dynamic
- 语法:
proxy_bind_dynamic on | off; - 默认值:
proxy_bind_dynamic off; - 上下文:
http, server, location - 说明: 此指令在1.29.3版本中引入。启用时,每次连接尝试都会执行绑定操作。
proxy_buffer_size
- 语法:
proxy_buffer_size size; - 默认值:
proxy_buffer_size 4k|8k; - 上下文:
http, server, location - 说明: 设置用于读取从代理服务器收到的响应第一部分的缓冲区大小。此部分通常包含一个小的响应头;如果超过缓冲区大小,响应被视为无效。默认情况下,缓冲区大小等于一个内存页(4K或8K,取决于平台)。可以设置得更小。
proxy_buffering
- 语法:
proxy_buffering on | off; - 默认值:
proxy_buffering on; - 上下文:
http, server, location - 说明: 启用或禁用对代理服务器响应的缓冲。当启用缓冲时,nginx会尽快从代理服务器接收响应,并将其保存到
proxy_buffer_size和proxy_buffers指令设置的缓冲区中。如果整个响应不适合内存,部分可以保存到磁盘的临时文件中。写入临时文件由proxy_max_temp_file_size和proxy_temp_file_write_size指令控制。 当禁用缓冲时,响应同步传递给客户端,即时接收即时发送。nginx不会尝试从代理服务器读取整个响应。nginx一次可以从服务器接收的最大数据大小由proxy_buffer_size指令设置。 缓冲也可以通过响应头字段“X-Accel-Buffering”中传递“yes”或“no”来启用或禁用。此功能可以使用proxy_ignore_headers指令禁用。
proxy_buffers
- 语法:
proxy_buffers number size; - 默认值:
proxy_buffers 8 4k|8k; - 上下文:
http, server, location - 说明: 设置用于读取代理服务器响应的缓冲区的数量和大小,针对单个连接。默认情况下,缓冲区大小等于一个内存页(4K或8K,取决于平台)。
proxy_busy_buffers_size
- 语法:
proxy_busy_buffers_size size; - 默认值:
proxy_busy_buffers_size 8k|16k; - 上下文:
http, server, location - 说明: 当启用对代理服务器响应的缓冲时,限制在响应尚未完全读取时可用于向客户端发送响应的缓冲区的总大小。同时,其余缓冲区可用于读取响应,并在必要时将部分响应缓冲到临时文件中。默认情况下,大小受
proxy_buffer_size和proxy_buffers指令设置的两个缓冲区的大小限制。
proxy_cache
- 语法:
proxy_cache zone | off; - 默认值:
proxy_cache off; - 上下文:
http, server, location - 说明: 定义用于缓存的共享内存区域。同一个区域可以在多个地方使用。参数值可以包含变量。
off参数禁用从上级配置级别继承的缓存。
proxy_cache_background_update
- 语法:
proxy_cache_background_update on | off; - 默认值:
proxy_cache_background_update off; - 上下文:
http, server, location - 说明: 此指令在1.11.10版本中引入。允许启动后台子请求来更新过期的缓存项,同时向客户端返回陈旧的缓存响应。注意,在更新时需要允许使用陈旧的缓存响应。
proxy_cache_bypass
- 语法:
proxy_cache_bypass string ...; - 默认值: —
- 上下文:
http, server, location - 说明: 定义不从缓存中获取响应的条件。如果至少一个字符串参数的值不为空且不等于“0”,则不会从缓存中获取响应。可以与
proxy_no_cache指令一起使用。
proxy_cache_convert_head
- 语法:
proxy_cache_convert_head on | off; - 默认值:
proxy_cache_convert_head on; - 上下文:
http, server, location - 说明: 此指令在1.9.7版本中引入。启用或禁用在缓存时将“HEAD”方法转换为“GET”。当转换被禁用时,缓存键应配置为包含
$request_method。
proxy_cache_key
- 语法:
proxy_cache_key string; - 默认值:
proxy_cache_key $scheme$proxy_host$request_uri; - 上下文:
http, server, location - 说明: 定义缓存键,例如
proxy_cache_key "$host$request_uri $cookie_user";默认情况下,缓存键与请求方案、代理主机和请求URI类似。
proxy_cache_lock
- 语法:
proxy_cache_lock on | off; - 默认值:
proxy_cache_lock off; - 上下文:
http, server, location - 说明: 此指令在1.1.12版本中引入。启用后,一次只允许一个请求通过向代理服务器传递请求来填充根据
proxy_cache_key标识的新缓存元素。其他相同缓存元素的请求将等待响应出现在缓存中或该元素的缓存锁被释放,等待时间由proxy_cache_lock_timeout指令设置。
proxy_cache_lock_age
- 语法:
proxy_cache_lock_age time; - 默认值:
proxy_cache_lock_age 5s; - 上下文:
http, server, location - 说明: 此指令在1.7.8版本中引入。如果传递给代理服务器以填充新缓存元素的最后一个请求在指定时间内未完成,则可以向代理服务器传递另一个请求。
proxy_cache_lock_timeout
- 语法:
proxy_cache_lock_timeout time; - 默认值:
proxy_cache_lock_timeout 5s; - 上下文:
http, server, location - 说明: 此指令在1.1.12版本中引入。为
proxy_cache_lock设置超时时间。当超时到期时,请求将被传递到代理服务器,但响应不会被缓存。
proxy_cache_max_range_offset
- 语法:
proxy_cache_max_range_offset number; - 默认值: —
- 上下文:
http, server, location - 说明: 此指令在1.11.6版本中引入。设置字节范围请求的偏移量(以字节为单位)。如果范围超出偏移量,则范围请求将传递到代理服务器,并且响应不会被缓存。
proxy_cache_methods
- 语法:
proxy_cache_methods GET | HEAD | POST ...; - 默认值:
proxy_cache_methods GET HEAD; - 上下文:
http, server, location - 说明: 此指令在0.7.59版本中引入。如果客户端请求方法在此指令中列出,则响应将被缓存。“GET”和“HEAD”方法始终会添加到列表中,但建议显式指定它们。另请参阅
proxy_no_cache指令。
proxy_cache_min_uses
- 语法:
proxy_cache_min_uses number; - 默认值:
proxy_cache_min_uses 1; - 上下文:
http, server, location - 说明: 设置在多少次请求之后缓存响应。
proxy_cache_path
- 语法:
proxy_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函数计算的结果。
levels参数定义缓存的层次结构级别:1到3级,每个级别接受值1或2。例如,配置proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;将产生类似/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c的文件名。 缓存的响应首先写入临时文件,然后重命名该文件。从0.8.9版本开始,临时文件和缓存可以放在不同的文件系统上。但请注意,在这种情况下,文件将跨两个文件系统复制,而不是简单的重命名操作。因此,建议将缓存和保存临时文件的目录放在同一文件系统上。
proxy_cache_purge
- 语法:
proxy_cache_purge string ...; - 默认值: —
- 上下文:
http, server, location - 说明: 定义从缓存中删除(清除)缓存元素的条件。如果至少一个字符串参数的值不为空且不等于“0”,则删除具有相应缓存键的缓存元素。返回状态码204(无内容)。如果缓存键以
*结尾,则匹配所有以该字符串开头的缓存元素。此功能是商业订阅的一部分。
proxy_cache_revalidate
- 语法:
proxy_cache_revalidate on | off; - 默认值:
proxy_cache_revalidate off; - 上下文:
http, server, location - 说明: 此指令在1.5.7版本中引入。使用带有“If-Modified-Since”和“If-None-Match”头字段的条件请求启用对过期缓存项的重新验证。
proxy_cache_use_stale
- 语法:
proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | off ...; - 默认值:
proxy_cache_use_stale off; - 上下文:
http, server, location - 说明: 确定在与代理服务器通信时,在哪些情况下可以使用陈旧的缓存响应。该指令的参数与
proxy_next_upstream指令的参数匹配。error参数还允许在无法选择代理服务器来处理请求时使用陈旧的缓存响应。此外,updating参数允许在缓存响应当前正在更新时使用陈旧的缓存响应。这可以最大限度地减少更新缓存数据时对代理服务器的访问次数。 使用陈旧缓存响应也可以在响应头中直接启用,指定响应变得陈旧后的秒数。这比使用指令参数的优先级低。- “Cache-Control”头字段的“stale-while-revalidate”扩展允许在当前正在更新时使用陈旧的缓存响应。
- “Cache-Control”头字段的“stale-if-error”扩展允许在发生错误时使用陈旧的缓存响应。
proxy_cache_valid
- 语法:
proxy_cache_valid [code ...] time; - 默认值: —
- 上下文:
http, server, location - 说明: 为不同的响应代码设置缓存时间。例如,
proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m;将为代码200和302的响应设置10分钟的缓存,为代码404的响应设置1分钟的缓存。如果仅指定缓存时间,则只缓存200、301和302响应。此外,可以指定any参数来缓存任何响应。 缓存的参数也可以直接在响应头中设置。这比使用指令设置缓存时间具有更高的优先级。- “X-Accel-Expires”头字段设置响应的缓存时间(以秒为单位)。零值禁用对响应的缓存。如果值以
@前缀开头,则设置自Epoch以来的绝对时间(以秒为单位),直到该时间为止可以缓存响应。 - 如果头字段不包含“X-Accel-Expires”字段,则可以在“Expires”或“Cache-Control”头字段中设置缓存参数。
- 如果头字段包含“Set-Cookie”字段,则不会缓存此类响应。
- 如果头字段包含带有特殊值“*”的“Vary”字段,则不会缓存此类响应。如果头字段包含带有其他值的“Vary”字段,则此类响应将考虑相应的请求头字段进行缓存。
- “X-Accel-Expires”头字段设置响应的缓存时间(以秒为单位)。零值禁用对响应的缓存。如果值以
proxy_connect_timeout
- 语法:
proxy_connect_timeout time; - 默认值:
proxy_connect_timeout 60s; - 上下文:
http, server, location - 说明: 定义与代理服务器建立连接的超时时间。应该注意,此超时时间通常不会超过75秒。
proxy_cookie_domain
- 语法:
proxy_cookie_domain off;proxy_cookie_domain domain replacement; - 默认值:
proxy_cookie_domain off; - 上下文:
http, server, location - 说明: 此指令在1.1.15版本中引入。设置应在代理服务器响应的“Set-Cookie”头字段的
domain属性中更改的文本。假设代理服务器返回了带有属性“domain=localhost”的“Set-Cookie”头字段。指令proxy_cookie_domain localhost example.org;将此属性重写为“domain=example.org”。domain和replacement字符串以及域属性开头的点将被忽略。匹配不区分大小写。domain和replacement字符串可以包含变量。 该指令也可以使用正则表达式指定。在这种情况下,domain应以“~”符号开头。正则表达式可以包含命名和位置捕获,replacement可以引用它们。 可以在同一级别指定多个proxy_cookie_domain指令。如果有多个指令可以应用于cookie,则将选择第一个匹配的指令。off参数取消从上级配置级别继承的proxy_cookie_domain指令的效果。
proxy_cookie_flags
- 语法:
proxy_cookie_flags off | cookie [flag ...]; - 默认值:
proxy_cookie_flags off; - 上下文:
http, server, location - 说明: 此指令在1.19.3版本中引入。为cookie设置一个或多个标志。
cookie可以包含文本、变量及其组合。flag可以包含文本、变量及其组合。secure、httponly、samesite=strict、samesite=lax、samesite=none参数添加相应的标志。nosecure、nohttponly、nosamesite参数删除相应的标志。 也可以使用正则表达式指定cookie。在这种情况下,cookie应以“~”符号开头。可以在同一配置级别指定多个proxy_cookie_flags指令。如果有多个指令可以应用于cookie,则将选择第一个匹配的指令。off参数取消从上级配置级别继承的proxy_cookie_flags指令的效果。
proxy_cookie_path
- 语法:
proxy_cookie_path off;proxy_cookie_path path replacement; - 默认值:
proxy_cookie_path off; - 上下文:
http, server, location - 说明: 此指令在1.1.15版本中引入。设置应在代理服务器响应的“Set-Cookie”头字段的
path属性中更改的文本。假设代理服务器返回了带有属性“path=/two/some/uri/”的“Set-Cookie”头字段。指令proxy_cookie_path /two/ /;将此属性重写为“path=/some/uri/”。path和replacement字符串可以包含变量。该指令也可以使用正则表达式指定。在这种情况下,path应以“~”符号开头。正则表达式可以包含命名和位置捕获,replacement可以引用它们。 可以在同一级别指定多个proxy_cookie_path指令。如果有多个指令可以应用于cookie,则将选择第一个匹配的指令。off参数取消从上级配置级别继承的proxy_cookie_path指令的效果。
proxy_force_ranges
- 语法:
proxy_force_ranges on | off; - 默认值:
proxy_force_ranges off; - 上下文:
http, server, location - 说明: 此指令在1.7.7版本中引入。无论代理服务器响应中的“Accept-Ranges”字段如何,都为来自代理服务器的缓存和未缓存响应启用字节范围支持。
proxy_headers_hash_bucket_size
- 语法:
proxy_headers_hash_bucket_size size; - 默认值:
proxy_headers_hash_bucket_size 64; - 上下文:
http, server, location - 说明: 设置
proxy_hide_header和proxy_set_header指令使用的哈希表的存储桶大小。设置哈希表的详细信息在单独的文档中提供。
proxy_headers_hash_max_size
- 语法:
proxy_headers_hash_max_size size; - 默认值:
proxy_headers_hash_max_size 512; - 上下文:
http, server, location - 说明: 设置
proxy_hide_header和proxy_set_header指令使用的哈希表的最大大小。设置哈希表的详细信息在单独的文档中提供。
proxy_hide_header
- 语法:
proxy_hide_header field; - 默认值: —
- 上下文:
http, server, location - 说明: 默认情况下,nginx不会将代理服务器响应中的“Date”、“Server”、“X-Pad”和“X-Accel-...”头字段传递给客户端。
proxy_hide_header指令设置将不会被传递的额外字段。相反,如果需要允许传递字段,可以使用proxy_pass_header指令。
proxy_http_version
- 语法:
proxy_http_version 1.0 | 1.1 | 2; - 默认值:
proxy_http_version 1.1; - 上下文:
http, server, location - 说明: 此指令在1.1.4版本中引入。设置代理使用的HTTP协议版本。默认情况下使用1.1版本。建议将版本1.1或2与keepalive连接和NTLM身份验证一起使用。版本2需要
ngx_http_v2_module模块。
proxy_ignore_client_abort
- 语法:
proxy_ignore_client_abort on | off; - 默认值:
proxy_ignore_client_abort off; - 上下文:
http, server, location - 说明: 确定当客户端在没有等待响应的情况下关闭连接时,是否应关闭与代理服务器的连接。
proxy_ignore_headers
- 语法:
proxy_ignore_headers field ...; - 默认值: —
- 上下文:
http, server, location - 说明: 禁用处理来自代理服务器的某些响应头字段。可以忽略以下字段:“X-Accel-Redirect”、“X-Accel-Expires”、“X-Accel-Limit-Rate”、“X-Accel-Buffering”、“X-Accel-Charset”、“Expires”、“Cache-Control”、“Set-Cookie”和“Vary”。如果未禁用,处理这些头字段会产生以下效果:
- “X-Accel-Expires”、“Expires”、“Cache-Control”、“Set-Cookie”和“Vary”设置响应缓存的参数;
- “X-Accel-Redirect”执行到指定URI的内部重定向;
- “X-Accel-Limit-Rate”设置向客户端传输响应的速率限制;
- “X-Accel-Buffering”启用或禁用响应的缓冲;
- “X-Accel-Charset”设置响应的所需字符集。
proxy_intercept_errors
- 语法:
proxy_intercept_errors on | off; - 默认值:
proxy_intercept_errors off; - 上下文:
http, server, location - 说明: 确定是否应将代码大于或等于300的代理响应传递给客户端,还是应拦截并使用
error_page指令重定向到nginx进行处理。
proxy_limit_rate
- 语法:
proxy_limit_rate rate; - 默认值:
proxy_limit_rate 0; - 上下文:
http, server, location - 说明: 此指令在1.7.7版本中引入。限制从代理服务器读取响应的速度。速率以每秒字节数指定。零值禁用速率限制。限制是每个请求设置的,因此如果nginx同时打开两个到代理服务器的连接,总体速率将是指定限制的两倍。限制仅在启用对代理服务器响应的缓冲时有效。参数值可以包含变量。
proxy_max_temp_file_size
- 语法:
proxy_max_temp_file_size size; - 默认值:
proxy_max_temp_file_size 1024m; - 上下文:
http, server, location - 说明: 当启用对代理服务器响应的缓冲,并且整个响应不适合
proxy_buffer_size和proxy_buffers指令设置的缓冲区时,部分响应可以保存到临时文件。此指令设置临时文件的最大大小。每次写入临时文件的数据大小由proxy_temp_file_write_size指令设置。零值禁用将响应缓冲到临时文件。此限制不适用于将被缓存或存储在磁盘上的响应。
proxy_method
- 语法:
proxy_method method; - 默认值: —
- 上下文:
http, server, location - 说明: 指定在转发到代理服务器的请求中使用的HTTP方法,而不是来自客户端请求的方法。参数值可以包含变量。
proxy_next_upstream
- 语法:
proxy_next_upstream error | timeout | denied | invalid_header | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | non_idempotent | off ...; - 默认值:
proxy_next_upstream error timeout; - 上下文:
http, server, location - 说明: 指定在哪些情况下应将请求传递到下一个服务器:
error:在与服务器建立连接、向其传递请求或读取响应头时发生错误;timeout:在与服务器建立连接、向其传递请求或读取响应头时发生超时;denied:服务器拒绝连接;invalid_header:服务器返回空或无效响应;http_500:服务器返回代码500的响应;http_502:服务器返回代码502的响应;http_503:服务器返回代码503的响应;http_504:服务器返回代码504的响应;http_403:服务器返回代码403的响应;http_404:服务器返回代码404的响应;http_429:服务器返回代码429的响应;non_idempotent:通常,具有非幂等方法的请求不会传递给下一个服务器,启用此选项显式允许重试此类请求;off:禁止将请求传递给下一个服务器。 应注意,只有在尚未向客户端发送任何内容的情况下,才能将请求传递给下一个服务器。该指令还定义了与服务器通信的失败尝试。error、timeout、denied和invalid_header的情况始终被视为失败尝试,即使它们未在指令中指定。http_500、http_502、http_503、http_504和http_429的情况仅在指令中指定时才被视为失败尝试。http_403和http_404的情况永远不会被视为失败尝试。
proxy_next_upstream_timeout
- 语法:
proxy_next_upstream_timeout time; - 默认值:
proxy_next_upstream_timeout 0; - 上下文:
http, server, location - 说明: 此指令在1.7.5版本中引入。限制请求可以传递到下一个服务器的时间。
0值关闭此限制。
proxy_next_upstream_tries
- 语法:
proxy_next_upstream_tries number; - 默认值:
proxy_next_upstream_tries 0; - 上下文:
http, server, location - 说明: 此指令在1.7.5版本中引入。限制将请求传递到下一个服务器的可能尝试次数。
0值关闭此限制。
proxy_no_cache
- 语法:
proxy_no_cache string ...; - 默认值: —
- 上下文:
http, server, location - 说明: 定义不将响应保存到缓存的条件。如果至少一个字符串参数的值不为空且不等于“0”,则不会保存响应。
proxy_pass
- 语法:
proxy_pass URL; - 默认值: —
- 上下文:
location, if in location, limit_except - 说明: 设置代理服务器的协议、地址和可选URI。协议可以指定为“http”或“https”。地址可以指定为域名或IP地址,以及可选端口。如果域名解析为多个地址,则所有地址都将以轮询方式使用。此外,地址可以指定为服务器组。
proxy_pass_header
- 语法:
proxy_pass_header field; - 默认值: —
- 上下文:
http, server, location - 说明: 允许将否则会被隐藏的头字段传递给客户端。
proxy_pass_request_body
- 语法:
proxy_pass_request_body on | off; - 默认值:
proxy_pass_request_body on; - 上下文:
http, server, location - 说明: 指示是否将原始请求体传递给代理服务器。
proxy_pass_request_headers
- 语法:
proxy_pass_request_headers on | off; - 默认值:
proxy_pass_request_headers on; - 上下文:
http, server, location - 说明: 指示是否将原始请求头字段传递给代理服务器。
proxy_read_timeout
- 语法:
proxy_read_timeout time; - 默认值:
proxy_read_timeout 60s; - 上下文:
http, server, location - 说明: 定义从代理服务器读取响应的超时时间。超时仅在两次连续的读取操作之间设置,而不是整个响应的传输时间。如果代理服务器在此时间内未传输任何内容,连接将关闭。
proxy_redirect
- 语法:
proxy_redirect default;proxy_redirect off;proxy_redirect redirect replacement; - 默认值:
proxy_redirect default; - 上下文:
http, server, location - 说明: 设置代理服务器响应中“Location”和“Refresh”头字段应更改的文本。假设代理服务器返回了头字段“Location: http://localhost:8000/two/some/uri/”。指令`proxy_redirect http://localhost:8000/two/ http://frontend/one/;`将此字符串重写为“Location: http://frontend/one/some/uri/”。`replacement`中可能省略了服务器名称。`default`参数指定的默认替换使用`location`和`proxy_pass`指令的参数。`off`参数取消所有`proxy_redirect`指令对当前级别的影响。
proxy_request_buffering
- 语法:
proxy_request_buffering on | off; - 默认值:
proxy_request_buffering on; - 上下文:
http, server, location - 说明: 此指令在1.7.11版本中引入。启用或禁用客户端请求体缓冲。启用缓冲后,在将请求发送到代理服务器之前,将从客户端读取整个请求体。禁用缓冲时,请求体在收到时立即发送到代理服务器。在这种情况下,如果nginx已经开始发送请求体,则无法将请求传递给下一个服务器。当使用HTTP/1.1分块传输编码发送原始请求体时,无论指令值如何,都将缓冲请求体,除非为代理启用了HTTP/1.1。
proxy_send_lowat
- 语法:
proxy_send_lowat size; - 默认值:
proxy_send_lowat 0; - 上下文:
http, server, location - 说明: 如果指令设置为非零值,nginx将尝试使用
SO_SNDLOWAT套接字选项最小化套接字发送缓冲区中的挂起数据量。
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_ssl_certificate
- 语法:
proxy_ssl_certificate file; - 默认值: —
- 上下文:
http, server, location - 说明: 指定用于向代理服务器进行身份验证的PEM格式证书文件。
proxy_ssl_certificate_key
- 语法:
proxy_ssl_certificate_key file; - 默认值: —
- 上下文:
http, server, location - 说明: 指定用于向代理服务器进行身份验证的PEM格式私钥文件。
proxy_ssl_ciphers
- 语法:
proxy_ssl_ciphers ciphers; - 默认值:
proxy_ssl_ciphers DEFAULT; - 上下文:
http, server, location - 说明: 指定用于与代理服务器建立SSL连接的允许密码。
proxy_ssl_conf_command
- 语法:
proxy_ssl_conf_command name value; - 默认值: —
- 上下文:
http, server, location - 说明: 此指令在1.19.4版本中引入。设置与代理服务器建立SSL连接时要执行的OpenSSL配置命令。
proxy_ssl_crl
- 语法:
proxy_ssl_crl file; - 默认值: —
- 上下文:
http, server, location - 说明: 指定用于验证代理服务器证书的PEM格式证书吊销列表。
proxy_ssl_name
- 语法:
proxy_ssl_name name; - 默认值:
proxy_ssl_name $proxy_host; - 上下文:
http, server, location - 说明: 允许覆盖用于验证代理服务器证书的服务器名称,并在通过SNI传递时使用。
proxy_ssl_password_file
- 语法:
proxy_ssl_password_file file; - 默认值: —
- 上下文:
http, server, location - 说明: 指定包含密码的文件,每个密码在一行上,用于解密私钥。
proxy_ssl_protocols
- 语法:
proxy_ssl_protocols [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3]; - 默认值:
proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; - 上下文:
http, server, location - 说明: 启用用于与代理服务器建立SSL连接的指定协议。
proxy_ssl_server_name
- 语法:
proxy_ssl_server_name on | off; - 默认值:
proxy_ssl_server_name off; - 上下文:
http, server, location - 说明: 此指令在1.7.0版本中引入。启用或禁用通过TLS服务器名称指示扩展(SNI)将服务器名称传递给代理服务器。
proxy_ssl_session_reuse
- 语法:
proxy_ssl_session_reuse on | off; - 默认值:
proxy_ssl_session_reuse on; - 上下文:
http, server, location - 说明: 确定在与代理服务器建立SSL连接时是否应重用SSL会话。如果重用会话,则会在配置文件中针对每个服务器进行缓存。
proxy_ssl_trusted_certificate
- 语法:
proxy_ssl_trusted_certificate file; - 默认值: —
- 上下文:
http, server, location - 说明: 指定用于验证代理服务器证书的PEM格式可信CA证书文件。
proxy_ssl_verify
- 语法:
proxy_ssl_verify on | off; - 默认值:
proxy_ssl_verify off; - 上下文:
http, server, location - 说明: 启用或禁用对代理服务器证书的验证。
proxy_ssl_verify_depth
- 语法:
proxy_ssl_verify_depth number; - 默认值:
proxy_ssl_verify_depth 1; - 上下文:
http, server, location - 说明: 设置代理服务器证书链的验证深度。
proxy_store
- 语法:
proxy_store on | off | string; - 默认值:
proxy_store off; - 上下文:
http, server, location - 说明: 启用将文件保存到磁盘。
on参数使用与alias或root指令对应的路径保存文件。off参数禁用保存。此外,可以使用带有变量的字符串显式设置文件名。
proxy_store_access
- 语法:
proxy_store_access users:permissions ...; - 默认值:
proxy_store_access user:rw; - 上下文:
http, server, location - 说明: 设置新创建的文件和目录的访问权限。
proxy_temp_file_write_size
- 语法:
proxy_temp_file_write_size size; - 默认值:
proxy_temp_file_write_size 8k|16k; - 上下文:
http, server, location - 说明: 限制当启用从代理服务器到临时文件的响应缓冲时,一次写入临时文件的数据大小。
proxy_temp_path
- 语法:
proxy_temp_path path [level1 [level2 [level3]]]; - 默认值:
proxy_temp_path proxy_temp; - 上下文:
http, server, location - 说明: 定义用于存储临时文件的目录。在指定目录下最多可以使用三级子目录层次结构。
内嵌变量
ngx_http_proxy_module模块支持一些内嵌变量,可以在proxy_set_header等指令中使用:
$proxy_host:代理服务器的名称和端口,取自proxy_pass指令。$proxy_port:代理服务器的端口,取自proxy_pass指令或$proxy_host变量。$proxy_add_x_forwarded_for:客户端地址,附加到“X-Forwarded-For”头字段中,以逗号分隔。如果客户端请求中不存在“X-Forwarded-For”头字段,则$proxy_add_x_forwarded_for变量等于$remote_addr。