11#! /bin/sh
22set -e
33
4- # sed '1i\http://mirrors.ustc.edu.cn/alpine/v3.5/main/' /etc/apk/repositories
4+ # cat > /etc/apk/repositories <<EOF
5+ # https://mirrors.ustc.edu.cn/alpine/latest-stable/main
6+ # https://mirrors.ustc.edu.cn/alpine/latest-stable/community
7+ # EOF
8+ # apk update
59
610NGINX_DOWNLOAD_URL=" http://nginx.org/download/nginx-${NGINX_VERSION} .tar.gz"
711NGINX_DEVEL_KIT_URL=" https://github.com/simpl/ngx_devel_kit/archive/v${NGINX_DEVEL_KIT_VERSION} .tar.gz"
812LUA_URL=" https://github.com/openresty/lua-nginx-module/archive/v${LUA_MODULE_VERSION} .tar.gz"
913NGINX_CACHE_PURGE_URL=" https://github.com/FRiCKLE/ngx_cache_purge/archive/${NGINX_CACHE_PURGE_VERSION} .tar.gz"
1014NGINX_UPSTREAM_CHECK_URL=" https://github.com/yaoweibin/nginx_upstream_check_module/archive/master.tar.gz"
1115MAXMIND_URL=" https://github.com/maxmind/geoip-api-c/releases/download/v${GEOIP_VERSION} /GeoIP-${GEOIP_VERSION} .tar.gz"
16+ HEADERS_MORE_URL=" https://github.com/openresty/headers-more-nginx-module/archive/v${HEADERS_MORE_VERSION} .tar.gz"
1217
13- BUILD_DEPENDENCIES=" gcc patch libc-dev make openssl-dev \
14- curl pcre-dev zlib-dev linux-headers luajit-dev \
15- gnupg libxslt-dev gd-dev perl-dev git geoip-dev ca-certificates"
18+ BUILD_DEPENDENCIES=" build-base linux-headers ca-certificates \
19+ patch openssl-dev cmake autoconf automake go \
20+ curl pcre-dev zlib-dev luajit-dev libtool \
21+ gnupg libxslt-dev gd-dev perl-dev git geoip-dev git"
1622
1723${WITH_DEBUG} && {
1824 EXTRA_ARGS=" ${EXTRA_ARGS} --with-debug"
1925}
2026
21- # mkdir -p ${NGINX_SETUP_DIR}
27+ mkdir -p ${NGINX_SETUP_DIR}
2228cd ${NGINX_SETUP_DIR}
2329
2430# build dependencies
@@ -46,6 +52,7 @@ ${WITH_UPSTREAM_CHECK} && {
4652 tar -zxC " ${NGINX_SETUP_DIR} " -f " ${NGINX_SETUP_DIR} /ngx_upstream_check.tar"
4753}
4854
55+ # lua module support
4956${WITH_LUA} && {
5057 EXTRA_ARGS=" ${EXTRA_ARGS} --add-module=${NGINX_SETUP_DIR} /lua-nginx-module-${LUA_MODULE_VERSION} "
5158
@@ -56,24 +63,54 @@ ${WITH_LUA} && {
5663 export LUAJIT_INC=/usr/include/luajit-2.1
5764}
5865
66+ # headers-more module support
67+ EXTRA_ARGS=" ${EXTRA_ARGS} --add-module=${NGINX_SETUP_DIR} /headers-more-nginx-module-${HEADERS_MORE_VERSION} "
68+ curl -fSL " ${HEADERS_MORE_URL} " -o " ${NGINX_SETUP_DIR} /headers-more-nginx-module-${HEADERS_MORE_VERSION} .tar.gz"
69+ tar -zxC " ${NGINX_SETUP_DIR} " -f " ${NGINX_SETUP_DIR} /headers-more-nginx-module-${HEADERS_MORE_VERSION} .tar.gz"
70+
71+ # ngx_brotli module support
72+ EXTRA_ARGS=" ${EXTRA_ARGS} --add-module=${NGINX_SETUP_DIR} /ngx_brotli"
73+ git clone https://github.com/bagder/libbrotli --depth=1 ${NGINX_SETUP_DIR} /libbrotli
74+ cd " ${NGINX_SETUP_DIR} /libbrotli"
75+ ./autogen.sh && ./configure && make -j $( getconf _NPROCESSORS_ONLN) && make install
76+ git clone --depth=1 https://github.com/google/ngx_brotli " ${NGINX_SETUP_DIR} /ngx_brotli"
77+ cd " ${NGINX_SETUP_DIR} /ngx_brotli"
78+ git submodule update --init
79+
5980# install geoip
6081curl -fSL $MAXMIND_URL -o " ${NGINX_SETUP_DIR} /geoip_module.tar"
6182tar -zxC " ${NGINX_SETUP_DIR} " -f " ${NGINX_SETUP_DIR} /geoip_module.tar"
6283cd ${NGINX_SETUP_DIR} /GeoIP-${GEOIP_VERSION}
63- ./configure && make && make check && make install
84+ ./configure && make -j $( getconf _NPROCESSORS_ONLN ) && make check && make install
6485
65- # nginx user role
86+ # nginx default www
6687mkdir -p /var/www/nginx
67- addgroup -S ${NGINX_USER}
68- adduser -D -S -h /var/www/nginx \
69- -u 1000 -s /sbin/nologin -G ${NGINX_USER} ${NGINX_USER}
7088
7189# build nginx
7290curl -fSL " ${NGINX_DOWNLOAD_URL} " -o " ${NGINX_SETUP_DIR} /nginx.tar"
7391tar -zxC " ${NGINX_SETUP_DIR} " -f " ${NGINX_SETUP_DIR} /nginx.tar"
7492
7593cd ${NGINX_SETUP_DIR} /nginx-${NGINX_VERSION}
7694
95+ curl -fSL http://nginx.org/download/nginx-$NGINX_VERSION .tar.gz.asc -o " ${NGINX_SETUP_DIR} /nginx.tar.gz.asc"
96+ export GNUPGHOME=" $( mktemp -d) "
97+ found=' ' ;
98+ for server in \
99+ ha.pool.sks-keyservers.net \
100+ hkp://keyserver.ubuntu.com:80 \
101+ hkp://p80.pool.sks-keyservers.net:80 \
102+ pgp.mit.edu \
103+ ; do \
104+ echo " Fetching GPG key $GPG_KEYS from $server " ; \
105+ gpg --keyserver " $server " --keyserver-options timeout=10 --recv-keys " $GPG_KEYS " && found=yes && break ; \
106+ done ;
107+
108+ test -z " $found " && echo >&2 " error: failed to fetch GPG key $GPG_KEYS " && exit 1;
109+ gpg --batch --verify " ${NGINX_SETUP_DIR} /nginx.tar.gz.asc" " ${NGINX_SETUP_DIR} /nginx.tar"
110+ rm -r " $GNUPGHOME " " ${NGINX_SETUP_DIR} /nginx.tar.gz.asc"
111+
112+
113+ # nginx_upstream_check_module patch
77114if [[ ${WITH_UPSTREAM_CHECK} ]]; then
78115 patch -p0 < ${NGINX_SETUP_DIR} /nginx_upstream_check_module-master/check_1.11.5+.patch
79116fi
86123 --http-log-path=/var/log/nginx/access.log \
87124 --error-log-path=/var/log/nginx/error.log \
88125 --lock-path=/var/lock/nginx.lock \
89- --pid-path=/run/nginx.pid \
90- --user=${NGINX_USER} \
91- --group=${NGINX_USER} \
126+ --pid-path=/tmp/nginx.pid \
92127 --http-client-body-temp-path=${NGINX_TEMP_DIR} /body \
93128 --http-fastcgi-temp-path=${NGINX_TEMP_DIR} /fastcgi \
94129 --http-proxy-temp-path=${NGINX_TEMP_DIR} /proxy \
@@ -137,8 +172,8 @@ cp ${NGINX_SETUP_DIR}/test.conf /etc/nginx/
137172
138173cat > ${NGINX_SITECONF_DIR} /default.conf << EOF
139174server {
140- listen 80 default_server;
141- listen [::]:80 default_server ipv6only=on;
175+ listen 8000 default_server;
176+ listen [::]:8000 default_server ipv6only=on;
142177 server_name localhost;
143178
144179 root /var/www/nginx/html;
@@ -171,6 +206,7 @@ RUN_DEPENDENCIES="$( \
171206 | xargs -r apk info --installed \
172207 | sort -u \
173208) "
209+ RUN_DEPENDENCIES=" $RUN_DEPENDENCIES su-exec"
174210echo " install rundeps $RUN_DEPENDENCIES "
175211apk add --no-cache --virtual .nginx-rundeps $RUN_DEPENDENCIES
176212
@@ -180,7 +216,3 @@ apk del .gettext
180216mv /tmp/envsubst /usr/local/bin/
181217cd /
182218rm -rf ${NGINX_SETUP_DIR} /
183-
184- # forward request and error logs to docker log collector
185- ln -sf /dev/stdout /var/log/nginx/access.log
186- ln -sf /dev/stderr /var/log/nginx/error.log
0 commit comments