go ahead On 04/07/24 12:27 GMT, Kirill A. Korinsky wrote: > ports@, Robert, > > I'd like to ping about this trivial patch that allows me to use nginx with > unwind for last weeks. > > Additionally, I had added ngx_cache_purge as new subpackage which brings > qutie stable module https://github.com/FRiCKLE/ngx_cache_purge which allows > to purge some elements of cache via HTTP request. I don't include it into > default build, and build it as dynamic module. > > The original point about unwind patch: > > On Sat, 15 Jun 2024 12:09:21 +0100, > Kirill A. Korinsky <kir...@korins.ky> wrote: > > > > ports@ > > > > Here a trivial patch which improves compatibility with unwind. > > > > I'm using the following unwind.config: > > > > preference { recursor oDoT-autoconf } > > > > forwarder { 172.31.2.1 } > > > > force accept bogus forwarder { > > some.internal.domain > > } > > > > where 172.31.2.1 is Unifi GW and nginx is configured as: > > > > server { > > listen 127.0.0.1:80; > > > > resolver 127.0.0.1; > > > > set $nas_uri > > "http://nas.some.internal.domain"; > > > > location / { > > proxy_pass $nas_uri; > > } > > } > > > > it can't be used due errors in log: > > > > 2024/06/15 11:53:55 [error] 30452#0: invalid UDP DNS response 49184 > > fl:81A0 > > 2024/06/15 11:54:00 [error] 30452#0: invalid UDP DNS response 30883 > > fl:81A0 > > 2024/06/15 11:54:00 [error] 30452#0: invalid UDP DNS response 49184 > > fl:81A0 > > 2024/06/15 11:54:05 [error] 30452#0: invalid UDP DNS response 30883 > > fl:81A0 > > > > because nginx rejects response with enabled AD bit. > > > > And, finally, the diff: > > diff --git www/nginx/Makefile www/nginx/Makefile > index 7d86279085c..203e8aa3fc5 100644 > --- www/nginx/Makefile > +++ www/nginx/Makefile > @@ -17,15 +17,17 @@ COMMENT-njs= nginx javascript scripting > module > COMMENT-passenger= nginx passenger (ruby/python/nodejs) integration module > COMMENT-rtmp= nginx module for RTMP streaming > COMMENT-securelink= nginx HMAC secure link module > +COMMENT-cache_purge= nginx module which adds ability to purge cache content > > VERSION= 1.26.1 > DISTNAME= nginx-${VERSION} > CATEGORIES= www > -REVISION-main= 0 > +REVISION-main= 1 > REVISION-passenger= 0 > > VERSION-njs= 0.8.2 > VERSION-rtmp= 1.2.1 > +VERSION-cache_purge= 2.3 > > PKGNAME-main= ${DISTNAME} > PKGNAME-image_filter= nginx-image_filter-${VERSION} > @@ -42,6 +44,7 @@ PKGNAME-njs= nginx-njs-${VERSION} > PKGNAME-passenger= nginx-passenger-${VERSION} > PKGNAME-rtmp= nginx-rtmp-${VERSION} > PKGNAME-securelink= nginx-securelink-${VERSION} > +PKGNAME-cache_purge= ngx_cache_purge-${VERSION} > > ONLY_FOR_ARCHS-passenger= aarch64 amd64 arm i386 > > @@ -59,7 +62,8 @@ _GH_MODS= \ > nginx njs ${VERSION-njs} \ > simpl ngx_devel_kit v0.3.0 \ > leev ngx_http_geoip2_module 3.3 \ > - nginx-modules ngx_http_hmac_secure_link_module > 48c4625fbbf51ed5a95bfec23fa444f6c3702e50 > + nginx-modules ngx_http_hmac_secure_link_module > 48c4625fbbf51ed5a95bfec23fa444f6c3702e50 \ > + FRiCKLE ngx_cache_purge ${VERSION-cache_purge} > > .for _a _p _c in ${_GH_MODS} > DISTFILES.a+= ${_p}-{${_a}/${_p}/archive/}${_c}.tar.gz > @@ -76,7 +80,7 @@ MULTI_PACKAGES = -main -naxsi -perl ${MODULE_PACKAGES} > > MODULE_PACKAGES = -image_filter -geoip2 -xslt -mailproxy -stream \ > -passenger -headers_more -ldap_auth -lua -njs \ > - -rtmp -securelink > + -rtmp -securelink -cache_purge > > FLAVOR ?= > PSEUDO_FLAVORS = no_lua no_njs no_passenger > @@ -100,6 +104,7 @@ WANTLIB-headers_more= > WANTLIB-perl= c m perl > WANTLIB-passenger= m pthread ${COMPILER_LIBCXX} > WANTLIB-securelink= crypto > +WANTLIB-cache_purge= > > LIB_DEPENDS-main= devel/pcre2 > LIB_DEPENDS-xslt= textproc/libxml \ > @@ -114,6 +119,7 @@ LIB_DEPENDS-securelink= > LIB_DEPENDS-njs= devel/pcre2 \ > textproc/libxslt \ > textproc/libxml > +LIB_DEPENDS-cache_purge= > > MODLUA_RUNDEP= No > RUN_DEPENDS= www/nginx,-main=${VERSION} > @@ -202,7 +208,8 @@ CONFIGURE_ARGS+= --prefix=${NGINX_DIR} \ > > --add-dynamic-module=${WRKSRC}/headers-more-nginx-module \ > --add-dynamic-module=${WRKSRC}/nginx-auth-ldap \ > --add-dynamic-module=${WRKSRC}/ngx_http_geoip2_module \ > - > --add-dynamic-module=${WRKSRC}/ngx_http_hmac_secure_link_module > + > --add-dynamic-module=${WRKSRC}/ngx_http_hmac_secure_link_module \ > + --add-dynamic-module=${WRKSRC}/ngx_cache_purge > > SUBSTFILES= conf/nginx.conf */config > > @@ -212,7 +219,7 @@ ALL_TARGET= > pre-patch: > .for i in headers-more-nginx-module lua-nginx-module naxsi njs \ > nginx-auth-ldap ngx_devel_kit ngx_http_geoip2_module \ > - ngx_http_hmac_secure_link_module > + ngx_http_hmac_secure_link_module ngx_cache_purge > cd ${WRKSRC} && mv ../$i-* $i > .endfor > > diff --git www/nginx/distinfo www/nginx/distinfo > index 05b5868d540..1138961174f 100644 > --- www/nginx/distinfo > +++ www/nginx/distinfo > @@ -5,6 +5,7 @@ SHA256 (nginx-1.20.1-chroot.patch) = > SS1TB0j8N4/dn5pUTGT6WvkN3aAUuKz5+R0Nt+MG0gk > SHA256 (nginx-1.26.1.tar.gz) = +Rh0aP8usVkmC/1Thnwl/44zRyYjes8ie56HDlPT42s= > SHA256 (nginx-auth-ldap-83c059b73566c2ee9cbda920d91b66657cf120b7.tar.gz) = > aQxOW9sq4ZsP7nXNNW0YATRo20cmFrYJeloLvjRshGQ= > SHA256 (nginx-rtmp-module-v1.2.1.tar.gz) = > h6pZdACwtaBSdO4tI9jLgiThJoYiegq+MdeDs6ZF6jc= > +SHA256 (ngx_cache_purge-2.3.tar.gz) = > y31fIpGcYT8fAzQaGuuWCWUmkwLp6yNCXMqr0vXcu+w= > SHA256 (ngx_devel_kit-v0.3.0.tar.gz) = > iOBamainQZBm9a51lm+x78QJutRSLRSYbaB0VUrmFhk= > SHA256 (ngx_http_geoip2_module-3.3.tar.gz) = > QTeEOMgz4xOhiGnQxKcnBLSDXDCsr3/WgBOrZzL/eKc= > SHA256 > (ngx_http_hmac_secure_link_module-48c4625fbbf51ed5a95bfec23fa444f6c3702e50.tar.gz) > = ZXpA2rODS1enIREzlD1OqWwpWcv3NOUXH4eUOgOAmqg= > @@ -16,6 +17,7 @@ SIZE (nginx-1.20.1-chroot.patch) = 8783 > SIZE (nginx-1.26.1.tar.gz) = 1244738 > SIZE (nginx-auth-ldap-83c059b73566c2ee9cbda920d91b66657cf120b7.tar.gz) = > 18542 > SIZE (nginx-rtmp-module-v1.2.1.tar.gz) = 519919 > +SIZE (ngx_cache_purge-2.3.tar.gz) = 11717 > SIZE (ngx_devel_kit-v0.3.0.tar.gz) = 66455 > SIZE (ngx_http_geoip2_module-3.3.tar.gz) = 8509 > SIZE > (ngx_http_hmac_secure_link_module-48c4625fbbf51ed5a95bfec23fa444f6c3702e50.tar.gz) > = 6159 > diff --git www/nginx/patches/patch-ngx_cache_purge_config > www/nginx/patches/patch-ngx_cache_purge_config > new file mode 100644 > index 00000000000..e12d5e5a802 > --- /dev/null > +++ www/nginx/patches/patch-ngx_cache_purge_config > @@ -0,0 +1,25 @@ > +Build ngx_cache_purge as dynamic module > + > +Index: ngx_cache_purge/config > +--- ngx_cache_purge/config.orig > ++++ ngx_cache_purge/config > +@@ -15,7 +15,17 @@ if [ "$HTTP_UWSGI" = "YES" ]; then > + fi > + > + ngx_addon_name=ngx_http_cache_purge_module > +-HTTP_MODULES="$HTTP_MODULES ngx_http_cache_purge_module" > +-NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_cache_purge_module.c" > ++CACHE_PURGE_SRCS="$ngx_addon_dir/ngx_cache_purge_module.c" > ++ > ++if [ -n "$ngx_module_link" ]; then > ++ ngx_module_type=HTTP > ++ ngx_module_name="$ngx_addon_name" > ++ ngx_module_srcs="$CACHE_PURGE_SRCS" > ++ > ++ . auto/module > ++else > ++ HTTP_MODULES="$HTTP_MODULES $ngx_addon_name" > ++ NGX_ADDON_SRCS="$NGX_ADDON_SRCS $CACHE_PURGE_SRCS" > ++fi > + > + have=NGX_CACHE_PURGE_MODULE . auto/have > diff --git www/nginx/patches/patch-src_core_ngx_resolver_c > www/nginx/patches/patch-src_core_ngx_resolver_c > new file mode 100644 > index 00000000000..b07cea4cc97 > --- /dev/null > +++ www/nginx/patches/patch-src_core_ngx_resolver_c > @@ -0,0 +1,12 @@ > +Index: src/core/ngx_resolver.c > +--- src/core/ngx_resolver.c.orig > ++++ src/core/ngx_resolver.c > +@@ -1774,7 +1774,7 @@ ngx_resolver_process_response(ngx_resolver_t *r, u_cha > + (response->nar_hi << 8) + response->nar_lo); > + > + /* response to a standard query */ > +- if ((flags & 0xf870) != 0x8000 || (trunc && tcp)) { > ++ if ((flags & 0xf850) != 0x8000 || (trunc && tcp)) { > + ngx_log_error(r->log_level, r->log, 0, > + "invalid %s DNS response %ui fl:%04Xi", > + tcp ? "TCP" : "UDP", ident, flags); > diff --git www/nginx/pkg/DESCR-cache_purge www/nginx/pkg/DESCR-cache_purge > new file mode 100644 > index 00000000000..a1021baf292 > --- /dev/null > +++ www/nginx/pkg/DESCR-cache_purge > @@ -0,0 +1,8 @@ > +ngx_cache_purge is nginx module which adds ability to purge content from > +FastCGI, proxy, SCGI and uWSGI caches. > + > +It is build as separated dynamic module and it should be load as: > + > + load_module modules/ngx_http_cache_purge_module.so; > + > +Documentation available at https://github.com/FRiCKLE/ngx_cache_purge > diff --git www/nginx/pkg/PLIST-cache_purge www/nginx/pkg/PLIST-cache_purge > new file mode 100644 > index 00000000000..ea7fe579cd9 > --- /dev/null > +++ www/nginx/pkg/PLIST-cache_purge > @@ -0,0 +1 @@ > +@so ngx_http_cache_purge_module.so > > > -- > wbr, Kirill
-- Regards, Robert Nagy