diff --git a/docs/changelog/index.md b/docs/changelog/index.md index 982a4840..4f7f1ea7 100644 --- a/docs/changelog/index.md +++ b/docs/changelog/index.md @@ -10,6 +10,9 @@ sidebar: false ## [Unreleased] +### ⚡️ 优化与改进 +- OpenResty 默认压缩 CSS、JavaScript、JSON、XML、RSS、Atom 和 SVG 等文本响应,并发送 `Vary: Accept-Encoding`;普通代理请求默认先缓冲请求体再转发,升级时旧值 `false` 会改为 `true`,流式上传场景可手动关闭。 + ### ✨ 新功能 - 代理路由详情支持单独关闭 HTTP/2,默认仍启用;关闭后该路由生成的 HTTPS 配置不再启用 HTTP/2。 diff --git a/docs/reference/configuration.md b/docs/reference/configuration.md index 4ddbe696..c3f181f6 100644 --- a/docs/reference/configuration.md +++ b/docs/reference/configuration.md @@ -237,7 +237,7 @@ Server 的所有核心基础配置定义在 `config.yaml` 中,且均支持环 | `openresty_proxy_read_timeout` | `int` | 源站收到请求后返回数据,Agent 最大的等待数据返回间隔时长(秒) | `60` | | `openresty_websocket_enabled` | `bool` | 是否在 HTTP 段中自动载入渲染支持 WebSocket 协议的全局变量及头信息 | `true` | | `openresty_http3_enabled` | `bool` | 是否在生成 nginx 监听描述中渲染支持 HTTP/3 QUIC 双栈监听能力 | `true` | -| `openresty_proxy_request_buffering_enabled`| `bool` | 是否将客户端 Request Body 先在网关做完全部读取缓存再向源站递交 | `false` | +| `openresty_proxy_request_buffering_enabled`| `bool` | 是否将客户端 Request Body 先在网关做完全部读取缓存再向源站递交;普通代理建议开启,流式上传或实时转发场景可关闭 | `true` | | `openresty_proxy_buffering_enabled` | `bool` | 是否允许网关暂存源站的大量 Response 数据待全部解析后再转发给用户 | `true` | | `openresty_proxy_buffers` | `string` | nginx 反代响应缓冲区的分配数量与单缓存大大小(如 `16 16k`) | `16 16k` | | `openresty_proxy_buffer_size` | `string` | 存放源站返回 Response Header 头部信息的专属缓冲区限制 | `8k` | diff --git a/internal/apps/openflare/config_version/snapshot.go b/internal/apps/openflare/config_version/snapshot.go index 79029917..c4fa04e7 100644 --- a/internal/apps/openflare/config_version/snapshot.go +++ b/internal/apps/openflare/config_version/snapshot.go @@ -549,7 +549,7 @@ func buildOpenRestyConfigSnapshot(ctx context.Context) openRestyConfigSnapshot { ProxyReadTimeout: getIntConfig(model.ConfigKeyOpenRestyProxyReadTimeout, defaultOpenRestyProxyTimeout), WebsocketEnabled: getBoolConfig(model.ConfigKeyOpenRestyWebsocketEnabled, true), HTTP3Enabled: getBoolConfig(model.ConfigKeyOpenRestyHTTP3Enabled, true), - ProxyRequestBuffering: getBoolConfig(model.ConfigKeyOpenRestyProxyRequestBufferingEnabled, false), + ProxyRequestBuffering: getBoolConfig(model.ConfigKeyOpenRestyProxyRequestBufferingEnabled, true), ProxyBufferingEnabled: getBoolConfig(model.ConfigKeyOpenRestyProxyBufferingEnabled, true), ProxyBuffers: getStringConfig(model.ConfigKeyOpenRestyProxyBuffers, "16 16k"), ProxyBufferSize: getStringConfig(model.ConfigKeyOpenRestyProxyBufferSize, "8k"), diff --git a/internal/infra/persistence/migrator/goose/postgres/202610070002_enable_proxy_request_buffering_by_default.sql b/internal/infra/persistence/migrator/goose/postgres/202610070002_enable_proxy_request_buffering_by_default.sql new file mode 100644 index 00000000..2a3b68ed --- /dev/null +++ b/internal/infra/persistence/migrator/goose/postgres/202610070002_enable_proxy_request_buffering_by_default.sql @@ -0,0 +1,7 @@ +-- +goose Up +UPDATE w_system_configs +SET value = 'true', updated_at = CURRENT_TIMESTAMP +WHERE key = 'openresty_proxy_request_buffering_enabled' AND value = 'false'; + +-- +goose Down +-- Intentionally left unchanged: restoring the old value could overwrite a later user choice. diff --git a/internal/infra/persistence/migrator/goose/sqlite/202610070002_enable_proxy_request_buffering_by_default.sql b/internal/infra/persistence/migrator/goose/sqlite/202610070002_enable_proxy_request_buffering_by_default.sql new file mode 100644 index 00000000..2a3b68ed --- /dev/null +++ b/internal/infra/persistence/migrator/goose/sqlite/202610070002_enable_proxy_request_buffering_by_default.sql @@ -0,0 +1,7 @@ +-- +goose Up +UPDATE w_system_configs +SET value = 'true', updated_at = CURRENT_TIMESTAMP +WHERE key = 'openresty_proxy_request_buffering_enabled' AND value = 'false'; + +-- +goose Down +-- Intentionally left unchanged: restoring the old value could overwrite a later user choice. diff --git a/pkg/render/openresty/types.go b/pkg/render/openresty/types.go index c7fe0cc5..b969f28c 100644 --- a/pkg/render/openresty/types.go +++ b/pkg/render/openresty/types.go @@ -102,6 +102,8 @@ http { gzip {{OpenRestyGzip}}; gzip_min_length {{OpenRestyGzipMinLength}}; gzip_comp_level {{OpenRestyGzipCompLevel}}; + gzip_vary on; + gzip_types text/plain text/css text/xml application/javascript application/json application/xml application/rss+xml application/atom+xml image/svg+xml; {{OpenRestyResolverDirective}}{{OpenRestyCacheBlock}} include {{OpenRestyRouteConfigInclude}}; } `