From 1abe1da89eae54551eda4c147fe48ba07aae519b Mon Sep 17 00:00:00 2001 From: bunkerity Date: Thu, 12 Nov 2020 15:03:45 +0100 Subject: [PATCH] brotli support --- compile.sh | 4 +++- confs/global/nginx.conf | 2 ++ confs/site/brotli.conf | 4 ++++ confs/site/server.conf | 1 + entrypoint/defaults.sh | 6 +++++- entrypoint/site-config.sh | 10 ++++++++++ 6 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 confs/site/brotli.conf diff --git a/compile.sh b/compile.sh index a6c9f4a..a961d2c 100644 --- a/compile.sh +++ b/compile.sh @@ -63,6 +63,8 @@ git_secure_clone https://github.com/openresty/headers-more-nginx-module.git d6d7 git_secure_clone https://github.com/leev/ngx_http_geoip2_module.git 1cabd8a1f68ea3998f94e9f3504431970f848fbf # cookie git_secure_clone https://github.com/AirisX/nginx_cookie_flag_module.git c4ff449318474fbbb4ba5f40cb67ccd54dc595d4 +# brotli +git_secure_clone https://github.com/google/ngx_brotli.git 9aec15e2aa6feea2113119ba06460af70ab3ea62 # LUA requirements git_secure_clone https://github.com/openresty/luajit2.git fe32831adcb3f5fe9259a9ce404fc54e1399bba3 @@ -127,7 +129,7 @@ tar -xvzf nginx-${NGINX_VERSION}.tar.gz cd nginx-$NGINX_VERSION CONFARGS=$(nginx -V 2>&1 | sed -n -e 's/^.*arguments: //p') CONFARGS=${CONFARGS/-Os -fomit-frame-pointer/-Os} -./configure $CONFARGS --add-dynamic-module=/tmp/ModSecurity-nginx --add-dynamic-module=/tmp/headers-more-nginx-module --add-dynamic-module=/tmp/ngx_http_geoip2_module --add-dynamic-module=/tmp/nginx_cookie_flag_module --add-dynamic-module=/tmp/lua-nginx-module +./configure $CONFARGS --add-dynamic-module=/tmp/ModSecurity-nginx --add-dynamic-module=/tmp/headers-more-nginx-module --add-dynamic-module=/tmp/ngx_http_geoip2_module --add-dynamic-module=/tmp/nginx_cookie_flag_module --add-dynamic-module=/tmp/lua-nginx-module --add-dynamic-module=/tmp/ngx_brotli make -j $NTASK modules cp ./objs/*.so /usr/lib/nginx/modules diff --git a/confs/global/nginx.conf b/confs/global/nginx.conf index 13e9a57..700b254 100644 --- a/confs/global/nginx.conf +++ b/confs/global/nginx.conf @@ -7,6 +7,8 @@ load_module /usr/lib/nginx/modules/ngx_http_headers_more_filter_module.so; load_module /usr/lib/nginx/modules/ngx_http_lua_module.so; load_module /usr/lib/nginx/modules/ngx_http_modsecurity_module.so; load_module /usr/lib/nginx/modules/ngx_stream_geoip2_module.so; +load_module /usr/lib/nginx/modules/ngx_http_brotli_filter_module.so; +load_module /usr/lib/nginx/modules/ngx_http_brotli_static_module.so; # run as daemon daemon on; diff --git a/confs/site/brotli.conf b/confs/site/brotli.conf new file mode 100644 index 0000000..734513a --- /dev/null +++ b/confs/site/brotli.conf @@ -0,0 +1,4 @@ +brotli on; +brotli_types %BROTLI_TYPES%; +brotli_comp_level %BROTLI_COMP_LEVEL%; +brotli_min_length %BROTLI_MIN_LENGTH%; diff --git a/confs/site/server.conf b/confs/site/server.conf index 5d884a5..eff1451 100644 --- a/confs/site/server.conf +++ b/confs/site/server.conf @@ -33,4 +33,5 @@ server { %USE_FAIL2BAN% %USE_CLIENT_CACHE% %USE_GZIP% + %USE_BROTLI% } diff --git a/entrypoint/defaults.sh b/entrypoint/defaults.sh index 0748875..4801fd2 100644 --- a/entrypoint/defaults.sh +++ b/entrypoint/defaults.sh @@ -15,7 +15,11 @@ CACHE_VALID="${CACHE_VALID-60s}" USE_GZIP="${USE_GZIP-no}" GZIP_COMP_LEVEL="${GZIP_COMP_LEVEL-5}" GZIP_MIN_LENGTH="${GZIP_MIN_LENGTH-1000}" -GZIP_TYPES="${GZIP_TYPES-text/css text/javascript application/json image/svg+xml text/plain application/xml text/xml}" +GZIP_TYPES="${GZIP_TYPES-application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/x-javascript application/xhtml+xml application/xml font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml}" +USE_BROTLI="${USE_BROTLI-no}" +BROTLI_COMP_LEVEL="${BROTLI_COMP_LEVEL-6}" +BROTLI_MIN_LENGTH="${BROTLI_MIN_LENGTH-1000}" +BROTLI_TYPES="${BROTLI_TYPES-application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/x-javascript application/xhtml+xml application/xml font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml}" REMOTE_PHP_PATH="${REMOTE_PHP_PATH-/app}" HEADER_SERVER="${HEADER_SERVER-no}" X_FRAME_OPTIONS="${X_FRAME_OPTIONS-DENY}" diff --git a/entrypoint/site-config.sh b/entrypoint/site-config.sh index e330bbc..95b8412 100644 --- a/entrypoint/site-config.sh +++ b/entrypoint/site-config.sh @@ -57,6 +57,16 @@ else replace_in_file "${NGINX_PREFIX}server.conf" "%USE_GZIP%" "" fi +# brotli compression +if [ "$USE_BROTLI" = "yes" ] ; then + replace_in_file "${NGINX_PREFIX}server.conf" "%USE_BROTLI%" "include ${NGINX_PREFIX}brotli.conf;" + replace_in_file "${NGINX_PREFIX}brotli.conf" "%BROTLI_COMP_LEVEL%" "$BROTLI_COMP_LEVEL" + replace_in_file "${NGINX_PREFIX}brotli.conf" "%BROTLI_MIN_LENGTH%" "$BROTLI_MIN_LENGTH" + replace_in_file "${NGINX_PREFIX}brotli.conf" "%BROTLI_TYPES%" "$BROTLI_TYPES" +else + replace_in_file "${NGINX_PREFIX}server.conf" "%USE_BROTLI%" "" +fi + # remote PHP if [ "$REMOTE_PHP" != "" ] ; then replace_in_file "${NGINX_PREFIX}server.conf" "%USE_PHP%" "include ${NGINX_PREFIX}php.conf;"