mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-05 07:26:36 +08:00
[优化] 增加 OpenResty 配置选项和性能页面工具提示
This commit is contained in:
@@ -38,10 +38,13 @@ const defaultPerformanceFields = {
|
||||
OpenRestyKeepaliveRequests: '1000',
|
||||
OpenRestyClientHeaderTimeout: '15',
|
||||
OpenRestyClientBodyTimeout: '15',
|
||||
OpenRestyClientMaxBodySize: '64m',
|
||||
OpenRestyLargeClientHeaderBuffers: '4 16k',
|
||||
OpenRestySendTimeout: '30',
|
||||
OpenRestyProxyConnectTimeout: '5',
|
||||
OpenRestyProxySendTimeout: '60',
|
||||
OpenRestyProxyReadTimeout: '60',
|
||||
OpenRestyProxyRequestBufferingEnabled: true,
|
||||
OpenRestyProxyBufferingEnabled: true,
|
||||
OpenRestyProxyBuffers: '16 16k',
|
||||
OpenRestyProxyBufferSize: '8k',
|
||||
@@ -76,10 +79,16 @@ const performanceFieldTooltips: Record<string, string> = {
|
||||
keepalive_requests: '单个长连接允许复用的最大请求数。',
|
||||
client_header_timeout: '读取客户端请求头的超时时间,单位秒。',
|
||||
client_body_timeout: '读取客户端请求体的超时时间,单位秒。',
|
||||
client_max_body_size:
|
||||
'限制客户端请求体大小,常用于上传文件大小控制,例如 64m、128m。',
|
||||
large_client_header_buffers:
|
||||
'控制大请求头使用的缓冲区数量和大小,例如 4 16k。',
|
||||
send_timeout: '向客户端发送响应时的超时时间,单位秒。',
|
||||
proxy_connect_timeout: '连接上游源站的超时时间,单位秒。',
|
||||
proxy_send_timeout: '向上游发送请求的超时时间,单位秒。',
|
||||
proxy_read_timeout: '等待上游返回响应的超时时间,单位秒。',
|
||||
proxy_request_buffering:
|
||||
'控制请求体是否先在 Nginx 侧缓冲后再转发给上游,上传和流式场景经常会用到。',
|
||||
proxy_buffering:
|
||||
'控制是否启用代理响应缓冲。开启后通常有更平滑的吞吐,但会增加内存占用。',
|
||||
proxy_buffers: '设置代理响应缓冲区的数量和大小,例如 16 16k。',
|
||||
@@ -207,11 +216,18 @@ export function PerformancePage() {
|
||||
OpenRestyClientHeaderTimeout:
|
||||
optionMap.OpenRestyClientHeaderTimeout ?? '15',
|
||||
OpenRestyClientBodyTimeout: optionMap.OpenRestyClientBodyTimeout ?? '15',
|
||||
OpenRestyClientMaxBodySize: optionMap.OpenRestyClientMaxBodySize ?? '64m',
|
||||
OpenRestyLargeClientHeaderBuffers:
|
||||
optionMap.OpenRestyLargeClientHeaderBuffers ?? '4 16k',
|
||||
OpenRestySendTimeout: optionMap.OpenRestySendTimeout ?? '30',
|
||||
OpenRestyProxyConnectTimeout:
|
||||
optionMap.OpenRestyProxyConnectTimeout ?? '5',
|
||||
OpenRestyProxySendTimeout: optionMap.OpenRestyProxySendTimeout ?? '60',
|
||||
OpenRestyProxyReadTimeout: optionMap.OpenRestyProxyReadTimeout ?? '60',
|
||||
OpenRestyProxyRequestBufferingEnabled: toBoolean(
|
||||
optionMap.OpenRestyProxyRequestBufferingEnabled,
|
||||
true,
|
||||
),
|
||||
OpenRestyProxyBufferingEnabled: toBoolean(
|
||||
optionMap.OpenRestyProxyBufferingEnabled,
|
||||
true,
|
||||
@@ -298,6 +314,18 @@ export function PerformancePage() {
|
||||
throw new Error(`${label} 必须为大于 0 的整数。`);
|
||||
}
|
||||
}
|
||||
if (!isSizeValue(performanceFields.OpenRestyClientMaxBodySize)) {
|
||||
throw new Error(
|
||||
'client_max_body_size 必须为整数或带 k/m/g 单位的大小值。',
|
||||
);
|
||||
}
|
||||
if (
|
||||
!isProxyBuffersValue(
|
||||
performanceFields.OpenRestyLargeClientHeaderBuffers,
|
||||
)
|
||||
) {
|
||||
throw new Error('large_client_header_buffers 格式必须类似 "4 16k"。');
|
||||
}
|
||||
|
||||
await saveOptionEntries(
|
||||
[
|
||||
@@ -334,6 +362,14 @@ export function PerformancePage() {
|
||||
'OpenRestyClientBodyTimeout',
|
||||
performanceFields.OpenRestyClientBodyTimeout.trim(),
|
||||
],
|
||||
[
|
||||
'OpenRestyClientMaxBodySize',
|
||||
performanceFields.OpenRestyClientMaxBodySize.trim(),
|
||||
],
|
||||
[
|
||||
'OpenRestyLargeClientHeaderBuffers',
|
||||
performanceFields.OpenRestyLargeClientHeaderBuffers.trim(),
|
||||
],
|
||||
[
|
||||
'OpenRestySendTimeout',
|
||||
performanceFields.OpenRestySendTimeout.trim(),
|
||||
@@ -357,6 +393,7 @@ export function PerformancePage() {
|
||||
throw new Error('代理超时参数必须为大于 0 的整数秒。');
|
||||
}
|
||||
}
|
||||
|
||||
if (!isProxyBuffersValue(performanceFields.OpenRestyProxyBuffers)) {
|
||||
throw new Error('proxy_buffers 格式必须类似 "16 16k"。');
|
||||
}
|
||||
@@ -381,6 +418,10 @@ export function PerformancePage() {
|
||||
'OpenRestyProxyReadTimeout',
|
||||
performanceFields.OpenRestyProxyReadTimeout.trim(),
|
||||
],
|
||||
[
|
||||
'OpenRestyProxyRequestBufferingEnabled',
|
||||
String(performanceFields.OpenRestyProxyRequestBufferingEnabled),
|
||||
],
|
||||
[
|
||||
'OpenRestyProxyBufferingEnabled',
|
||||
String(performanceFields.OpenRestyProxyBufferingEnabled),
|
||||
@@ -788,6 +829,36 @@ export function PerformancePage() {
|
||||
}
|
||||
/>
|
||||
</ResourceField>
|
||||
<ResourceField
|
||||
label="client_max_body_size"
|
||||
tooltip={performanceFieldTooltips.client_max_body_size}
|
||||
>
|
||||
<ResourceInput
|
||||
value={performanceFields.OpenRestyClientMaxBodySize}
|
||||
onChange={(event) =>
|
||||
setPerformanceFields((previous) => ({
|
||||
...previous,
|
||||
OpenRestyClientMaxBodySize: event.target.value,
|
||||
}))
|
||||
}
|
||||
placeholder="64m"
|
||||
/>
|
||||
</ResourceField>
|
||||
<ResourceField
|
||||
label="large_client_header_buffers"
|
||||
tooltip={performanceFieldTooltips.large_client_header_buffers}
|
||||
>
|
||||
<ResourceInput
|
||||
value={performanceFields.OpenRestyLargeClientHeaderBuffers}
|
||||
onChange={(event) =>
|
||||
setPerformanceFields((previous) => ({
|
||||
...previous,
|
||||
OpenRestyLargeClientHeaderBuffers: event.target.value,
|
||||
}))
|
||||
}
|
||||
placeholder="4 16k"
|
||||
/>
|
||||
</ResourceField>
|
||||
<ResourceField
|
||||
label="send_timeout (秒)"
|
||||
tooltip={performanceFieldTooltips.send_timeout}
|
||||
@@ -868,6 +939,20 @@ export function PerformancePage() {
|
||||
}
|
||||
/>
|
||||
</ResourceField>
|
||||
<ToggleField
|
||||
label="proxy_request_buffering"
|
||||
description="是否先缓冲请求体再转发给上游。"
|
||||
tooltip={performanceFieldTooltips.proxy_request_buffering}
|
||||
checked={
|
||||
performanceFields.OpenRestyProxyRequestBufferingEnabled
|
||||
}
|
||||
onChange={(checked) =>
|
||||
setPerformanceFields((previous) => ({
|
||||
...previous,
|
||||
OpenRestyProxyRequestBufferingEnabled: checked,
|
||||
}))
|
||||
}
|
||||
/>
|
||||
<ToggleField
|
||||
label="proxy_buffering"
|
||||
description="是否启用 proxy_buffering。"
|
||||
|
||||
Reference in New Issue
Block a user