diff --git a/alpine/APKBUILD-base.in b/alpine/APKBUILD-base.in
new file mode 100644
index 0000000..29cf39f
--- /dev/null
+++ b/alpine/APKBUILD-base.in
@@ -0,0 +1,101 @@
+# Maintainer: Andrei Belov <defan@nginx.com>
+# Contributor: Andrei Belov <defan@nginx.com>
+#
+
+_main_version=%%MAIN_VERSION%%
+_main_release=%%MAIN_RELEASE%%
+
+pkgname=nginx
+pkgver=$_main_version
+pkgrel=$_main_release
+pkgdesc="High performance web server"
+url="http://nginx.org/"
+arch="all"
+license="2-clause BSD-like license"
+provides=""
+depends=""
+makedepends="linux-headers openssl-dev pcre-dev zlib-dev"
+
+options="!check"
+
+pkgusers=""
+pkggroups=""
+install="$pkgname.pre-install $pkgname.post-install $pkgname.pre-deinstall $pkgname.post-upgrade"
+
+# we would like to ship all docs/licenses in the base package
+#subpackages="$pkgname-doc"
+
+replaces="nginx-common nginx-initscripts nginx-lua nginx-rtmp"
+source="nginx-$_main_version.tar.gz
+	nginx.conf
+	default.conf
+	nginx.logrotate
+	nginx.initd
+	nginx-debug.initd
+	COPYRIGHT
+	"
+builddir="$srcdir/nginx-$_main_version"
+
+_modules_dir="usr/lib/nginx/modules"
+
+prepare() {
+	local file; for file in $source; do
+		case $file in
+		*~*.patch)
+			msg $file
+			cd "$srcdir"/${file%%~*}-*
+			patch -p 1 -i "$srcdir/$file"
+			;;
+		*.patch)
+			msg $file
+			cd "$builddir"
+			patch -p 1 -i "$srcdir/$file"
+			;;
+		esac
+	done
+}
+
+build() {
+	cd "$builddir"
+
+	_nproc=`getconf _NPROCESSORS_ONLN`
+	if [ $_nproc -gt 1 ]; then
+		_make_opts="-j$_nproc"
+	fi
+
+	CFLAGS= ./configure %%BASE_CONFIGURE_ARGS%% --with-cc-opt="$CFLAGS" --with-ld-opt="$LDFLAGS" --with-debug
+	make $_make_opts
+	mv objs/nginx objs/nginx-debug
+	CFLAGS= ./configure %%BASE_CONFIGURE_ARGS%% --with-cc-opt="$CFLAGS" --with-ld-opt="$LDFLAGS"
+	make $_make_opts
+}
+
+package() {
+	cd "$builddir"
+
+	make DESTDIR="$pkgdir" install
+	install -m755 objs/nginx-debug "$pkgdir"/usr/sbin/nginx-debug
+
+	install -Dm644 objs/nginx.8 "$pkgdir"/usr/share/man/man8/nginx.8
+	if [ -z "`echo $subpackages | grep -- -doc`" ]; then
+		gzip "$pkgdir"/usr/share/man/man8/nginx.8
+	fi
+
+	cd "$pkgdir"
+
+	install -Dm644 "$srcdir"/nginx.conf ./etc/nginx/nginx.conf
+	install -Dm644 "$srcdir"/default.conf ./etc/nginx/conf.d/default.conf
+	install -Dm755 "$srcdir"/$pkgname.initd ./etc/init.d/nginx
+	install -Dm755 "$srcdir"/$pkgname-debug.initd ./etc/init.d/nginx-debug
+	install -Dm644 "$srcdir"/$pkgname.logrotate ./etc/logrotate.d/nginx
+
+	install -Dm644 "$srcdir"/COPYRIGHT ./usr/share/licenses/$pkgname/COPYRIGHT
+
+	mkdir -p ./usr/share/nginx
+	mv ./etc/nginx/html ./usr/share/nginx/
+
+	mkdir -p ./$_modules_dir
+	ln -sf /$_modules_dir ./etc/nginx/modules
+
+	rm -rf ./etc/nginx/*.default
+}
diff --git a/alpine/APKBUILD-module.in b/alpine/APKBUILD-module.in
new file mode 100644
index 0000000..0c111e3
--- /dev/null
+++ b/alpine/APKBUILD-module.in
@@ -0,0 +1,94 @@
+# Maintainer: Andrei Belov <defan@nginx.com>
+# Contributor: Andrei Belov <defan@nginx.com>
+#
+
+_main_version=%%MAIN_VERSION%%
+_main_release=%%MAIN_RELEASE%%
+
+pkgname=nginx-module-%%MODULE%%
+pkgver=%%MODULE_VERSION_PREFIX%%%%MODULE_VERSION%%
+pkgrel=%%MODULE_RELEASE%%
+pkgdesc="%%SUMMARY%%"
+url="http://nginx.org/"
+arch="all"
+license="2-clause BSD-like license"
+depends="nginx=$_main_version-r$_main_release %%MODULE_DEPENDS%%"
+makedepends="linux-headers openssl-dev pcre-dev zlib-dev %%MODULE_BUILD_DEPENDS%%"
+provides=""
+%%ADD_CONTROL_TAGS%%
+
+options="!check"
+
+pkgusers=""
+pkggroups=""
+install="$pkgname.post-install"
+
+# we would like to ship all docs/licenses in the base package
+#subpackages="$pkgname-doc"
+
+source="nginx-module-%%MODULE%%-$_main_version.tar.gz
+	%%MODULE_SOURCES%%
+	COPYRIGHT
+	"
+builddir="$srcdir/%%MODULE_SRCDIR%%"
+
+_modules_dir="usr/lib/nginx/modules"
+
+prepare() {
+	local file; for file in $source; do
+		case $file in
+		*~*.patch)
+			msg $file
+			cd "$srcdir"/${file%%~*}-*
+			patch -p 1 -i "$srcdir/$file"
+			;;
+		*.patch)
+			msg $file
+			cd "$builddir"
+			patch -p 1 -i "$srcdir/$file"
+			;;
+		extra-patch*)
+			msg $file
+			cd "$builddir/../"
+			patch -p 1 -i "$srcdir/$file"
+			;;
+		esac
+	done
+}
+
+build() {
+	cd "$builddir"
+
+	_nproc=`getconf _NPROCESSORS_ONLN`
+	if [ $_nproc -gt 1 ]; then
+		_make_opts="-j$_nproc"
+	fi
+
+	%%MODULE_PREBUILD%%
+
+	cd "$builddir"
+
+	CFLAGS= %%MODULE_ENV%% ./configure %%BASE_MODULE_CONFIGURE_ARGS%% %%MODULE_CONFIGURE_ARGS%% --with-cc-opt="$CFLAGS %%MODULE_CC_OPT_DEBUG%%" --with-ld-opt="$LDFLAGS" --with-debug
+	make $_make_opts modules
+	for so in `find objs/ -maxdepth 1 -type f -name "*.so"`; do \
+		debugso=`echo ${so} | sed -e "s|.so|-debug.so|"` ; \
+		mv ${so} ${debugso} ; \
+        done
+	CFLAGS= %%MODULE_ENV%% ./configure %%BASE_MODULE_CONFIGURE_ARGS%% %%MODULE_CONFIGURE_ARGS%% --with-cc-opt="$CFLAGS %%MODULE_CC_OPT_NODEBUG%%" --with-ld-opt="$LDFLAGS"
+	make $_make_opts modules
+}
+
+package() {
+	cd "$builddir"
+
+	%%MODULE_PREINSTALL%%
+
+	mkdir -p "$pkgdir"/usr/lib/nginx/modules
+	for so in `find objs/ -maxdepth 1 -type f -name "*.so"`; do \
+		install -m755 ${so} "$pkgdir"/usr/lib/nginx/modules/ ; \
+	done
+
+	cd "$pkgdir"
+
+	install -Dm644 "$srcdir"/COPYRIGHT ./usr/share/licenses/$pkgname/COPYRIGHT
+}
diff --git a/alpine/COPYRIGHT b/alpine/COPYRIGHT
new file mode 100644
index 0000000..af51e2f
--- /dev/null
+++ b/alpine/COPYRIGHT
@@ -0,0 +1,26 @@
+/* 
+ * Copyright (C) Igor Sysoev
+ * Copyright (C) Nginx, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
diff --git a/alpine/Makefile b/alpine/Makefile
new file mode 100644
index 0000000..a6826dc
--- /dev/null
+++ b/alpine/Makefile
@@ -0,0 +1,406 @@
+SHELL=		/bin/bash
+
+BASE_VERSION=	1.15.8
+BASE_RELEASE=	1
+PLUS_VERSION=	17
+PLUS_RELEASE=	${BASE_RELEASE}
+BASE_SRC=	nginx-$(BASE_VERSION).tar.gz
+SRCDIR=		nginx-$(BASE_VERSION)
+MODULE_SRCDIR=	$(SRCDIR)
+SRCPATH?=	../..
+MODSRC_PREFIX=	../
+
+ARCH=		$(shell uname -m)
+
+default:
+	@echo "valid targets: all base $(addprefix module-, $(MODULES)) test test-debug"
+
+MODULES=	geoip image-filter njs perl xslt
+
+MODULE_SUMMARY_geoip=		GeoIP dynamic modules
+MODULE_SUMMARY_image_filter=	image filter dynamic module
+MODULE_SUMMARY_njs=		njs dynamic modules
+MODULE_SUMMARY_perl=		Perl dynamic module
+MODULE_SUMMARY_xslt=		xslt dynamic module
+
+MODULE_VERSION_geoip=		$(BASE_VERSION)
+MODULE_RELEASE_geoip=		1
+MODULE_VERSION_image_filter=	$(BASE_VERSION)
+MODULE_RELEASE_image_filter=	1
+MODULE_VERSION_njs=		0.2.7
+MODULE_RELEASE_njs=		1
+MODULE_VERSION_perl=		$(BASE_VERSION)
+MODULE_RELEASE_perl=		1
+MODULE_VERSION_xslt=		$(BASE_VERSION)
+MODULE_RELEASE_xslt=		1
+
+MODULE_SOURCES_njs=		njs-$(MODULE_VERSION_njs).tar.gz
+MODULE_CONFARGS_geoip=		--with-stream \
+				--with-http_geoip_module=dynamic \
+				--with-stream_geoip_module=dynamic
+MODULE_CONFARGS_image_filter=	--with-http_image_filter_module=dynamic
+MODULE_CONFARGS_njs=		--with-stream \
+				--add-dynamic-module=$(MODSRC_PREFIX)njs-$(MODULE_VERSION_njs)/nginx
+MODULE_CONFARGS_perl=		--with-http_perl_module=dynamic
+MODULE_CONFARGS_xslt=		--with-http_xslt_module=dynamic
+
+# geoip
+
+MODULE_BUILD_DEPENDS_geoip=geoip-dev
+MODULE_DEPENDS_geoip=geoip
+
+define MODULE_ADD_CONTROL_TAGS_geoip
+replaces="nginx-mod-http-geoip"
+endef
+export MODULE_ADD_CONTROL_TAGS_geoip
+
+define MODULE_POST_geoip
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_geoip) for NGINX have been installed.
+To enable these modules, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+    load_module modules/ngx_http_geoip_module.so;
+    load_module modules/ngx_stream_geoip_module.so;
+
+Please refer to the modules documentation for further details:
+http://nginx.org/en/docs/http/ngx_http_geoip_module.html
+http://nginx.org/en/docs/stream/ngx_stream_geoip_module.html
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_geoip
+
+# image-filter
+
+MODULE_DEPENDS_image_filter=gd
+MODULE_BUILD_DEPENDS_image_filter=gd-dev
+
+define MODULE_ADD_CONTROL_TAGS_image_filter
+replaces="nginx-mod-http-image-filter"
+endef
+export MODULE_ADD_CONTROL_TAGS_image_filter
+
+define MODULE_POST_image_filter
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_image_filter) for NGINX has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+    load_module modules/ngx_http_image_filter_module.so;
+
+Please refer to the module documentation for further details:
+http://nginx.org/en/docs/http/ngx_http_image_filter_module.html
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_image_filter
+
+# njs
+
+MODULE_VERSION_PREFIX_njs=$(BASE_VERSION).
+MODULE_BUILD_DEPENDS_njs=libedit-dev
+
+define MODULE_ADD_CONTROL_TAGS_njs
+replaces="nginx-mod-http-js"
+endef
+export MODULE_ADD_CONTROL_TAGS_njs
+
+define MODULE_PREBUILD_njs
+	cd ../njs-$(MODULE_VERSION_njs) \&\& ./configure \&\& make njs
+endef
+export MODULE_PREBUILD_njs
+
+define MODULE_PREINSTALL_njs
+	mkdir -p "$$pkgdir"/usr/share/doc/nginx-module-njs
+	install -m644 ../njs-$(MODULE_VERSION_njs)/CHANGES "$$pkgdir"/usr/share/doc/nginx-module-njs/
+	mkdir -p "$$pkgdir"/usr/bin
+	install -m755 -s ../njs-$(MODULE_VERSION_njs)/build/njs "$$pkgdir"/usr/bin/
+endef
+export MODULE_PREINSTALL_njs
+
+define MODULE_POST_njs
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_njs) for NGINX have been installed.
+To enable these modules, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+    load_module modules/ngx_http_js_module.so;
+    load_module modules/ngx_stream_js_module.so;
+
+Please refer to the modules documentation for further details:
+http://nginx.org/en/docs/njs/
+http://nginx.org/en/docs/http/ngx_http_js_module.html
+http://nginx.org/en/docs/stream/ngx_stream_js_module.html
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_njs
+
+# perl
+
+MODULE_BUILD_DEPENDS_perl=perl-dev findutils
+
+define MODULE_ADD_CONTROL_TAGS_perl
+replaces="nginx-mod-http-perl"
+endef
+export MODULE_ADD_CONTROL_TAGS_perl
+
+define MODULE_PREINSTALL_perl
+	make DESTDIR=$$pkgdir INSTALLDIRS=vendor -f objs/Makefile install_perl_modules
+	find $$pkgdir/ -type f -name .packlist -exec rm -f '{}' \\;
+	find $$pkgdir/ -type f -name perllocal.pod -exec rm -f '{}' \\;
+	find $$pkgdir/ -type f -empty -exec rm -f '{}' \\;
+	find $$pkgdir/ -type f -iname '*.so' -exec chmod 0755 '{}' \\;
+endef
+export MODULE_PREINSTALL_perl
+
+define MODULE_POST_perl
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_perl) for NGINX has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+    load_module modules/ngx_http_perl_module.so;
+
+Please refer to the module documentation for further details:
+http://nginx.org/en/docs/http/ngx_http_perl_module.html
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_perl
+
+# xslt
+
+MODULE_DEPENDS_xslt=libxslt
+MODULE_BUILD_DEPENDS_xslt=libxslt-dev
+
+define MODULE_ADD_CONTROL_TAGS_xslt
+replaces="nginx-mod-http-xslt-filter"
+endef
+export MODULE_ADD_CONTROL_TAGS_xslt
+
+define MODULE_POST_xslt
+cat <<BANNER
+----------------------------------------------------------------------
+
+The $(MODULE_SUMMARY_xslt) for NGINX has been installed.
+To enable this module, add the following to /etc/nginx/nginx.conf
+and reload nginx:
+
+    load_module modules/ngx_http_xslt_filter_module.so;
+
+Please refer to the module documentation for further details:
+http://nginx.org/en/docs/http/ngx_http_xslt_module.html
+
+----------------------------------------------------------------------
+BANNER
+endef
+export MODULE_POST_xslt
+
+
+BASE_CONFIGURE_ARGS=\
+	--prefix=/etc/nginx \
+	--sbin-path=/usr/sbin/nginx \
+	--modules-path=/usr/lib/nginx/modules \
+	--conf-path=/etc/nginx/nginx.conf \
+	--error-log-path=/var/log/nginx/error.log \
+	--http-log-path=/var/log/nginx/access.log \
+	--pid-path=/var/run/nginx.pid \
+	--lock-path=/var/run/nginx.lock \
+	--http-client-body-temp-path=/var/cache/nginx/client_temp \
+	--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
+	--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
+	--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
+	--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
+	--with-perl_modules_path=/usr/lib/perl5/vendor_perl \
+	--user=nginx \
+	--group=nginx \
+	--with-compat \
+	--with-file-aio \
+	--with-threads \
+	--with-http_addition_module \
+	--with-http_auth_request_module \
+	--with-http_dav_module \
+	--with-http_flv_module \
+	--with-http_gunzip_module \
+	--with-http_gzip_static_module \
+	--with-http_mp4_module \
+	--with-http_random_index_module \
+	--with-http_realip_module \
+	--with-http_secure_link_module \
+	--with-http_slice_module \
+	--with-http_ssl_module \
+	--with-http_stub_status_module \
+	--with-http_sub_module \
+	--with-http_v2_module \
+	--with-mail \
+	--with-mail_ssl_module \
+	--with-stream \
+	--with-stream_realip_module \
+	--with-stream_ssl_module \
+	--with-stream_ssl_preread_module
+
+BASE_MODULE_CONFIGURE_ARGS=\
+	--with-compat
+
+export CR=\\n
+
+modname = $(shell echo $1 | cut -d '-' -f 3- | tr '-' '_')
+
+${HOME}/.abuild:
+	mkdir -p ${HOME}/.abuild
+
+${HOME}/.abuild/abuild-key.rsa: | ${HOME}/.abuild
+	cd ${HOME}/.abuild && umask 0007 && openssl genrsa -out abuild-key.rsa 2048
+	openssl rsa -in ${HOME}/.abuild/abuild-key.rsa -pubout -out ${HOME}/.abuild/abuild-key.rsa.pub
+
+${HOME}/.abuild/abuild.conf: ${HOME}/.abuild/abuild-key.rsa | ${HOME}/.abuild
+	echo PACKAGER_PRIVKEY=\"${HOME}/.abuild/abuild-key.rsa\" > ${HOME}/.abuild/abuild.conf
+
+all:	base modules
+	@echo "===> all done"
+
+modules:	base $(addprefix module-, $(MODULES))
+
+abuild:	abuild-base $(addprefix abuild-module-, $(MODULES))
+
+base:	${HOME}/.abuild/abuild.conf abuild-base
+	@echo "===> Building base package" ; \
+	/usr/bin/time -p $(SHELL) -c "cd abuild-base/ && abuild checksum && abuild unpack && abuild prepare && abuild -K build && abuild rootpkg" && \
+	ln -s abuild-base/pkg/nginx/usr/sbin base
+
+$(BASE_SRC):
+	wget http://nginx.org/download/$(BASE_SRC)
+
+abuild-base: $(BASE_SRC)
+	@echo "===> Creating $@"
+	@{ \
+	set -e ; \
+	mkdir -p abuild-base ; \
+	cp $(BASE_SRC) abuild-base/ ; \
+	cp nginx.* default.conf COPYRIGHT abuild-base/ ; \
+	cat nginx.initd.in | sed -e 's#%%DAEMON%%#nginx#g' > abuild-base/nginx.initd ; \
+	cat nginx.initd.in | sed -e 's#%%DAEMON%%#nginx-debug#g' > abuild-base/nginx-debug.initd ; \
+	cat APKBUILD-base.in | sed \
+		-e 's#%%MAIN_VERSION%%#$(BASE_VERSION)#g' \
+		-e 's#%%MAIN_RELEASE%%#$(BASE_RELEASE)#g' \
+		-e 's#%%BASE_CONFIGURE_ARGS%%#$(BASE_CONFIGURE_ARGS)#g' \
+		> abuild-base/APKBUILD ; \
+	}
+
+module-%: ${HOME}/.abuild/abuild.conf abuild-module-%
+	@echo "===> Building nginx-$@ package" ; \
+	/usr/bin/time -p $(SHELL) -c "cd abuild-$@/ && abuild checksum && abuild unpack && abuild prepare && abuild -K build && abuild rootpkg" && \
+	ln -s abuild-$@/pkg/nginx-module-$*/usr/lib/nginx/modules $@
+
+abuild-module-%: $(BASE_SRC)
+	@echo "===> Creating $@"
+	@{ \
+	set -e ; \
+	curdir=`pwd` ; \
+	module_asis=`echo $@ | cut -d '-' -f 3-` ; \
+	builddir=`echo abuild-module-$${module_asis}` ; \
+	mkdir -p $${builddir} ; \
+	cp $(BASE_SRC) $${builddir}/nginx-module-$${module_asis}-$(BASE_VERSION).tar.gz ; \
+	sources= ; \
+	for src in $(MODULE_SOURCES_$(call modname, $@)); do \
+		cp src/$${src} $${builddir}/ ; \
+		sources="$${sources} $${src}" ; \
+	done ; \
+	for p in $(MODULE_PATCHES_$(call modname, $@)); do \
+		cp src/$${p} $${builddir}/ ; \
+		sources="$${sources} $${p}" ; \
+	done ; \
+	cp COPYRIGHT $${builddir}/ ; \
+	definitions=`echo "$$MODULE_DEFINITIONS_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+	addcontroltags=`echo "$$MODULE_ADD_CONTROL_TAGS_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+	prebuild=`echo "$$MODULE_PREBUILD_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+	buildenv=`echo "$$MODULE_ENV_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+	preinstall=`echo "$$MODULE_PREINSTALL_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+	post=`echo "$$MODULE_POST_$(call modname, $@)" | sed -e ':a' -e 'N' -e '$$!ba' -e "s/\n/\$$CR/g"` ; \
+	cat APKBUILD-module.in | sed \
+		-e "s#%%MODULE%%#$${module_asis}#g" \
+		-e "s#%%SUMMARY%%#nginx $(MODULE_SUMMARY_$(call modname, $@))#g" \
+		-e "s#%%SHORT_SUMMARY%%#$(MODULE_SUMMARY_$(call modname, $@))#g" \
+		-e "s#%%MAIN_VERSION%%#$(BASE_VERSION)#g" \
+		-e "s#%%MAIN_RELEASE%%#$(BASE_RELEASE)#g" \
+		-e "s#%%PLUS_VERSION%%#$(PLUS_VERSION)#g" \
+		-e "s#%%MODULE_VERSION%%#$(MODULE_VERSION_$(call modname, $@))#g" \
+		-e "s#%%MODULE_RELEASE%%#$(MODULE_RELEASE_$(call modname, $@))#g" \
+		-e "s#%%MODULE_VERSION_PREFIX%%#$(MODULE_VERSION_PREFIX_$(call modname, $@))#g" \
+		-e 's#%%BASE_MODULE_CONFIGURE_ARGS%%#$(BASE_MODULE_CONFIGURE_ARGS)#g' \
+		-e "s#%%MODULE_CONFIGURE_ARGS%%#$(MODULE_CONFARGS_$(call modname, $@))#g" \
+		-e "s#%%MODULE_SOURCES%%#$${sources}#g" \
+		-e "s#%%MODULE_BUILD_DEPENDS%%#$(MODULE_BUILD_DEPENDS_$(call modname, $@))#g" \
+		-e "s#%%MODULE_DEPENDS%%#$(MODULE_DEPENDS_$(call modname, $@))#g" \
+		-e "s#%%MODULE_PREBUILD%%#$${prebuild}#g" \
+		-e "s#%%MODULE_PREINSTALL%%#$${preinstall}#g" \
+		-e "s#%%MODULE_CC_OPT_DEBUG%%#$(MODULE_CC_OPT_DEBUG_$(call modname, $@))#g" \
+		-e "s#%%MODULE_CC_OPT_NODEBUG%%#$(MODULE_CC_OPT_NODEBUG_$(call modname, $@))#g" \
+		-e "s#%%ADD_CONTROL_TAGS%%#$${addcontroltags}#g" \
+		-e "s#%%MODULE_ENV%%#$${buildenv}#g" \
+		-e "s#%%MODULE_SRCDIR%%#$(MODULE_SRCDIR)#g" \
+	> $${builddir}/APKBUILD ; \
+	cat nginx-module.post-install.in | sed \
+		-e "s#%%MODULE_POST%%#$$post#g" \
+	> $${builddir}/nginx-module-$${module_asis}.post-install ; \
+	}
+
+nginx-tests:
+	@{ \
+	if [ -d "$(SRCPATH)/nginx-tests" ]; then \
+		echo "===> Copying tests from $(SRCPATH)/nginx-tests" ; \
+		cp -rP $(SRCPATH)/nginx-tests nginx-tests ; \
+	else \
+		echo "===> Cloning tests" ; \
+		hg clone http://hg.nginx.org/nginx-tests ; \
+	fi ; \
+	}
+
+test: base nginx-tests
+	@echo "===> Running tests with regular binary/modules"
+	@{ \
+	pwd=`pwd` ; \
+	globals= ; \
+	for so in `find module-*/ -maxdepth 1 -type f -name "*module.so" | sort -t / -k 2`; do \
+		globals="$$globals load_module $$pwd/$$so;" ; \
+	done ; \
+	if [ -d $$pwd/abuild-module-perl ]; then \
+		globals="$$globals env PERL5LIB=$$pwd/abuild-module-perl/src/$(MODULE_SRCDIR)/objs/src/http/modules/perl:$$pwd/abuild-module-perl/src/$(MODULE_SRCDIR)/objs/src/http/modules/perl/blib/arch;" ; \
+	fi ; \
+	cd nginx-tests && TEST_NGINX_BINARY=$$pwd/base/nginx TEST_NGINX_GLOBALS="$$globals" prove $$PROVE_ARGS . ; \
+	}
+
+test-debug: base nginx-tests
+	@echo "===> Running tests with debug binary/modules"
+	@{ \
+	pwd=`pwd` ; \
+	globals= ; \
+	for so in `find module-*/ -maxdepth 1 -type f -name "*module-debug.so" | sort -t / -k 2`; do \
+		globals="$$globals load_module $$pwd/$$so;" ; \
+	done ; \
+	if [ -d $$pwd/abuild-module-perl ]; then \
+		globals="$$globals env PERL5LIB=$$pwd/abuild-module-perl/src/$(MODULE_SRCDIR)/objs/src/http/modules/perl:$$pwd/abuild-module-perl/src/$(MODULE_SRCDIR)/objs/src/http/modules/perl/blib/arch;" ; \
+	fi ; \
+	cd nginx-tests && TEST_NGINX_BINARY=$$pwd/base/nginx-debug TEST_NGINX_GLOBALS="$$globals" prove $$PROVE_ARGS . ; \
+	}
+
+clean:
+	@rm -rf base abuild-base abuild-module-* module-* $(BASE_SRC) nginx-tests
+
+.PHONY:	default all modules abuild test test-debug clean
+
+.SECONDARY:
diff --git a/alpine/default.conf b/alpine/default.conf
new file mode 100644
index 0000000..299c622
--- /dev/null
+++ b/alpine/default.conf
@@ -0,0 +1,45 @@
+server {
+    listen       80;
+    server_name  localhost;
+
+    #charset koi8-r;
+    #access_log  /var/log/nginx/host.access.log  main;
+
+    location / {
+        root   /usr/share/nginx/html;
+        index  index.html index.htm;
+    }
+
+    #error_page  404              /404.html;
+
+    # redirect server error pages to the static page /50x.html
+    #
+    error_page   500 502 503 504  /50x.html;
+    location = /50x.html {
+        root   /usr/share/nginx/html;
+    }
+
+    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
+    #
+    #location ~ \.php$ {
+    #    proxy_pass   http://127.0.0.1;
+    #}
+
+    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
+    #
+    #location ~ \.php$ {
+    #    root           html;
+    #    fastcgi_pass   127.0.0.1:9000;
+    #    fastcgi_index  index.php;
+    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
+    #    include        fastcgi_params;
+    #}
+
+    # deny access to .htaccess files, if Apache's document root
+    # concurs with nginx's one
+    #
+    #location ~ /\.ht {
+    #    deny  all;
+    #}
+}
+
diff --git a/alpine/nginx-module.post-install.in b/alpine/nginx-module.post-install.in
new file mode 100644
index 0000000..3461315
--- /dev/null
+++ b/alpine/nginx-module.post-install.in
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+%%MODULE_POST%%
+
+exit 0
diff --git a/alpine/nginx.conf b/alpine/nginx.conf
new file mode 100644
index 0000000..b78822c
--- /dev/null
+++ b/alpine/nginx.conf
@@ -0,0 +1,32 @@
+
+user  nginx;
+worker_processes  auto;
+
+error_log  /var/log/nginx/error.log warn;
+pid        /var/run/nginx.pid;
+
+
+events {
+    worker_connections  1024;
+}
+
+
+http {
+    include       /etc/nginx/mime.types;
+    default_type  application/octet-stream;
+
+    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
+                      '$status $body_bytes_sent "$http_referer" '
+                      '"$http_user_agent" "$http_x_forwarded_for"';
+
+    access_log  /var/log/nginx/access.log  main;
+
+    sendfile        on;
+    #tcp_nopush     on;
+
+    keepalive_timeout  65;
+
+    #gzip  on;
+
+    include /etc/nginx/conf.d/*.conf;
+}
diff --git a/alpine/nginx.initd.in b/alpine/nginx.initd.in
new file mode 100644
index 0000000..19216ea
--- /dev/null
+++ b/alpine/nginx.initd.in
@@ -0,0 +1,70 @@
+#!/sbin/openrc-run
+
+description="Nginx http and reverse proxy server"
+extra_commands="checkconfig"
+extra_started_commands="reload reopen upgrade"
+
+cfgfile=${cfgfile:-/etc/nginx/nginx.conf}
+pidfile=/var/run/nginx.pid
+command=/usr/sbin/%%DAEMON%%
+command_args="-c $cfgfile"
+required_files="$cfgfile"
+
+depend() {
+	need net
+	use dns logger netmount
+}
+
+start_pre() {
+	$command $command_args -t -q
+}
+
+checkconfig() {
+	ebegin "Checking $RC_SVCNAME configuration"
+	start_pre
+	eend $?
+}
+
+reload() {
+	ebegin "Reloading $RC_SVCNAME configuration"
+	start_pre && start-stop-daemon --signal HUP --pidfile $pidfile
+	eend $?
+}
+
+reopen() {
+	ebegin "Reopening $RC_SVCNAME log files"
+	start-stop-daemon --signal USR1 --pidfile $pidfile
+	eend $?
+}
+
+upgrade() {
+	start_pre || return 1
+
+	ebegin "Upgrading $RC_SVCNAME binary"
+
+	einfo "Sending USR2 to old binary"
+	start-stop-daemon --signal USR2 --pidfile $pidfile
+
+	einfo "Sleeping 3 seconds before pid-files checking"
+	sleep 3
+
+	if [ ! -f $pidfile.oldbin ]; then
+		eerror "File with old pid ($pidfile.oldbin) not found"
+		return 1
+	fi
+
+	if [ ! -f $pidfile ]; then
+		eerror "New binary failed to start"
+		return 1
+	fi
+
+	einfo "Sleeping 3 seconds before WINCH"
+	sleep 3 ; start-stop-daemon --signal 28 --pidfile $pidfile.oldbin
+
+	einfo "Sending QUIT to old binary"
+	start-stop-daemon --signal QUIT --pidfile $pidfile.oldbin
+
+	einfo "Upgrade completed"
+
+	eend $? "Upgrade failed"
+}
diff --git a/alpine/nginx.logrotate b/alpine/nginx.logrotate
new file mode 100644
index 0000000..584335a
--- /dev/null
+++ b/alpine/nginx.logrotate
@@ -0,0 +1,15 @@
+/var/log/nginx/*.log {
+	daily
+	missingok
+	rotate 52
+	compress
+	delaycompress
+	notifempty
+	create 640 nginx adm
+	sharedscripts
+	postrotate
+		if [ -f /var/run/nginx.pid ]; then
+			kill -USR1 `cat /var/run/nginx.pid`
+		fi
+	endscript
+}
diff --git a/alpine/nginx.post-install b/alpine/nginx.post-install
new file mode 100644
index 0000000..13e7299
--- /dev/null
+++ b/alpine/nginx.post-install
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+cat <<BANNER
+----------------------------------------------------------------------
+
+Thanks for using nginx!
+
+Please find the official documentation for nginx here:
+* http://nginx.org/en/docs/
+
+Please subscribe to nginx-announce mailing list to get
+the most important news about nginx:
+* http://nginx.org/en/support.html
+
+Commercial subscriptions for nginx are available on:
+* http://nginx.com/products/
+
+----------------------------------------------------------------------
+BANNER
+
+if [ ! -d /var/cache/nginx ]; then
+	mkdir -p /var/cache/nginx
+fi
+
+exit 0
diff --git a/alpine/nginx.post-upgrade b/alpine/nginx.post-upgrade
new file mode 100644
index 0000000..85c030a
--- /dev/null
+++ b/alpine/nginx.post-upgrade
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+if [ -x /etc/init.d/nginx ]; then
+    if [ -f /var/run/nginx.pid ]; then
+        NGX_PID=`cat /var/run/nginx.pid`
+        if kill -s 0 $NGX_PID 2>/dev/null; then
+            service nginx upgrade || true
+        fi
+    fi
+fi
diff --git a/alpine/nginx.pre-deinstall b/alpine/nginx.pre-deinstall
new file mode 100644
index 0000000..c915841
--- /dev/null
+++ b/alpine/nginx.pre-deinstall
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+if [ -x /etc/init.d/nginx -a -e /var/run/nginx.pid ]; then
+    service nginx stop
+fi
+
+exit 0
diff --git a/alpine/nginx.pre-install b/alpine/nginx.pre-install
new file mode 100644
index 0000000..cbb627d
--- /dev/null
+++ b/alpine/nginx.pre-install
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+set -e
+
+if ! getent group nginx >/dev/null; then
+    addgroup -S nginx 2>/dev/null
+fi
+
+if ! getent group www-data >/dev/null; then
+    addgroup -Sg 82 www-data 2>/dev/null
+fi
+
+if ! getent passwd nginx >/dev/null; then
+    adduser -SDH \
+	-h /var/lib/nginx \
+	-s /sbin/nologin \
+	-G nginx \
+	-g nginx \
+	nginx 2>/dev/null
+
+    addgroup nginx www-data 2>/dev/null
+fi
+
+exit 0
diff --git a/alpine/src/njs-0.2.7.tar.gz b/alpine/src/njs-0.2.7.tar.gz
new file mode 100644
index 0000000..1282aca
--- /dev/null
+++ b/alpine/src/njs-0.2.7.tar.gz
Binary files differ
