From cae80f97334d3c4d2aa13db4e67ac94c37f21199 Mon Sep 17 00:00:00 2001 From: Hanada Date: Sun, 31 Mar 2024 15:24:54 +0800 Subject: [PATCH 1/2] bugfix: add module order to avoid taking effect before other modules such as sub filter module Module order is incorrect for compression module. For example, if using ngx_http_sub_module, string is not replaced because it it tries to replace content when it is already compressed. For this purpose, you need to add module sorting in config to adjust the order in which modules take effect. --- filter/config | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/filter/config b/filter/config index 1d068e0..6537e7a 100644 --- a/filter/config +++ b/filter/config @@ -106,5 +106,22 @@ ngx_module_name=ngx_http_zstd_filter_module ngx_module_incs="$ngx_zstd_opt_I" ngx_module_srcs=$HTTP_ZSTD_SRCS ngx_module_libs=$NGX_LD_OPT +ngx_module_order="$ngx_module_name \ + ngx_pagespeed \ + ngx_http_postpone_filter_module \ + ngx_http_ssi_filter_module \ + ngx_http_charset_filter_module \ + ngx_http_xslt_filter_module \ + ngx_http_image_filter_module \ + ngx_http_sub_filter_module \ + ngx_http_addition_filter_module \ + ngx_http_gunzip_filter_module \ + ngx_http_userid_filter_module \ + ngx_http_headers_filter_module \ + ngx_http_copy_filter_module \ + ngx_http_range_body_filter_module \ + ngx_http_not_modified_filter_module \ + ngx_http_slice_filter_module" + . auto/module From 18c778db7ebd1b2a2f7157d9a5242af8a22d096c Mon Sep 17 00:00:00 2001 From: Hanada Date: Sun, 31 Mar 2024 18:01:47 +0800 Subject: [PATCH 2/2] bugfix: re-order filters for static modules ngx_module_order doesn't work with static modules, so we must re-order filters. --- filter/config | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/filter/config b/filter/config index 6537e7a..2942125 100644 --- a/filter/config +++ b/filter/config @@ -125,3 +125,20 @@ ngx_module_order="$ngx_module_name \ . auto/module +if [ "$ngx_module_link" != DYNAMIC ]; then + # ngx_module_order doesn't work with static modules, + # so we must re-order filters here. + + if [ "$HTTP_GZIP" = YES ]; then + next=ngx_http_gzip_filter_module + elif echo $HTTP_FILTER_MODULES | grep pagespeed_etag_filter >/dev/null; then + next=ngx_pagespeed_etag_filter + else + next=ngx_http_range_header_filter_module + fi + + HTTP_FILTER_MODULES=`echo $HTTP_FILTER_MODULES \ + | sed "s/$ngx_module_name//" \ + | sed "s/$next/$next $ngx_module_name/"` +fi +