mirror of
				https://github.com/dokku/buildpack-nginx.git
				synced 2025-10-31 11:56:30 +00:00 
			
		
		
		
	Compare commits
	
		
			132 Commits
		
	
	
		
			v4
			...
			aa191df661
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| aa191df661 | |||
| 7fe92f4821 | |||
| 25fb7889a5 | |||
| 6381244e26 | |||
| 7874622b04 | |||
| 0329f9e0ff | |||
| 043965bc7d | |||
| 3a1e442373 | |||
| 6a99e870e4 | |||
| ad5e831e74 | |||
| ed31137f94 | |||
| a68149bce7 | |||
| 6a592755ff | |||
| 2b95cd179b | |||
| 9b7f098ced | |||
| 7154c020a1 | |||
| a11d1ce303 | |||
| 53b41ec631 | |||
| c8eef60b09 | |||
| 09fe857895 | |||
| 31dc4746e2 | |||
| 59ea0b94e1 | |||
| 301d00c751 | |||
| 28328e4d90 | |||
| dce20c0a8f | |||
| 0e7bef86f9 | |||
| faf2a70272 | |||
| f981b138ed | |||
| 7794c2c36f | |||
| 22619107ab | |||
| 1a28ec8509 | |||
| e28d2049e5 | |||
| 6a73313edb | |||
| 648d73fda6 | |||
| 1769636cc8 | |||
| 6a9c79f8d0 | |||
| 7a1b16877d | |||
| c50c220ba4 | |||
| c2273de014 | |||
| 91c41476ae | |||
| 90c8bd9365 | |||
| 89196adbf1 | |||
| dbbbcc2c3e | |||
| daa9549fb7 | |||
| 66b91f18e4 | |||
| 6c1abc0547 | |||
| 6672b6257a | |||
| 758bf7c39c | |||
| 5a16fba7d1 | |||
| 8cb1d16d7e | |||
| aa0ebb8f47 | |||
| d5048c5fe3 | |||
| ec734ad787 | |||
| 150d82865b | |||
| cd84b47fd1 | |||
| e06b1e4df1 | |||
| 0d2e4c3ee6 | |||
| 1f534f7bc6 | |||
| 149f06c3b3 | |||
| 99d72cc005 | |||
| 46d850193d | |||
| 9eae441352 | |||
| b0ce745a1b | |||
| fe3a5dc54f | |||
| ad8d7c4261 | |||
| e8e0807a2d | |||
| 673fd38bb2 | |||
| 1945cf3645 | |||
| a9b3cb1767 | |||
| c6b3e74808 | |||
| ffaa249c5c | |||
| e31fee35bb | |||
| 0b290ce1f6 | |||
| ec0560066c | |||
| f873fe2024 | |||
| 9a82e569c1 | |||
| 6ecc56df72 | |||
| ed184f98fd | |||
| 2535bd6ebb | |||
| 6d1ae20708 | |||
| dded3b0717 | |||
| d4f93ae2b3 | |||
| 51f642dcff | |||
| 0a46959ef7 | |||
| c8ab63c69b | |||
| c2748f137e | |||
| dd3ac20c6d | |||
| 8848e945b9 | |||
| e7684a0f2c | |||
| fb081cabb2 | |||
| b69c1f3854 | |||
| 9c7cde74ad | |||
| c4c93aebe0 | |||
| 8348cbde99 | |||
| 1b0c929144 | |||
| ed2e482ed9 | |||
| aa23156a8e | |||
| c4ad67f9de | |||
| 7251f38a51 | |||
| 8797219a4b | |||
| c947e409e8 | |||
| 28d1a580cf | |||
| b9842399a3 | |||
| bb20210245 | |||
| d3a90d7520 | |||
| fabd871741 | |||
| 6430fa286b | |||
| b4bd0c0b1f | |||
| 06888793b1 | |||
| 7e7e9be442 | |||
| fd73b73748 | |||
| e1efa9a3a2 | |||
| f1d835dd90 | |||
| ca7b083aad | |||
| b7d61bbea4 | |||
| d4f83febf9 | |||
| bb6e9d398d | |||
| 513791b391 | |||
| 2e9a75e96b | |||
| 9c43925fac | |||
| 640f6d396a | |||
| 3a20517687 | |||
| afa0a94343 | |||
| ce6895ef38 | |||
| 6b7fd744ce | |||
| 9d273c7607 | |||
| 7d773187bb | |||
| 847b25b51d | |||
| 12fe84ae6b | |||
| d1cccfc747 | |||
| ccbb3d7ed5 | |||
| 770f4feb42 | 
							
								
								
									
										23
									
								
								.github/workflows/review-app-cleanup.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								.github/workflows/review-app-cleanup.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,23 @@ | |||||||
|  | --- | ||||||
|  | name: 'review-app-cleanup' | ||||||
|  |  | ||||||
|  | # yamllint disable-line rule:truthy | ||||||
|  | on: | ||||||
|  |   # onl run this workflow on pull request events | ||||||
|  |   pull_request: | ||||||
|  |     types: | ||||||
|  |       - closed | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   destroy_review_app: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     steps: | ||||||
|  |       - name: Destroy the review app | ||||||
|  |         uses: dokku/github-action@master | ||||||
|  |         with: | ||||||
|  |           # destroy a review app | ||||||
|  |           command: review-apps:destroy | ||||||
|  |           git_remote_url: 'ssh://dokku@dokku.com/nginx-buildpack' | ||||||
|  |           # specify a name for the review app | ||||||
|  |           review_app_name: nginx-buildpack-${{ github.event.pull_request.number }} | ||||||
|  |           ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }} | ||||||
							
								
								
									
										28
									
								
								.github/workflows/review-app.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								.github/workflows/review-app.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,28 @@ | |||||||
|  | --- | ||||||
|  | name: 'review-app' | ||||||
|  |  | ||||||
|  | # yamllint disable-line rule:truthy | ||||||
|  | on: | ||||||
|  |   # onl run this workflow on pull request events | ||||||
|  |   pull_request | ||||||
|  |  | ||||||
|  | jobs: | ||||||
|  |   review_app: | ||||||
|  |     runs-on: ubuntu-latest | ||||||
|  |     steps: | ||||||
|  |       - name: Cloning repo | ||||||
|  |         uses: actions/checkout@v2 | ||||||
|  |         with: | ||||||
|  |           fetch-depth: 0 | ||||||
|  |  | ||||||
|  |       - name: Push to dokku | ||||||
|  |         uses: dokku/github-action@master | ||||||
|  |         with: | ||||||
|  |           # create a review app | ||||||
|  |           command: review-apps:create | ||||||
|  |           git_remote_url: 'ssh://dokku@dokku.com/nginx-buildpack' | ||||||
|  |           # specify `--force` as a flag for git pushes | ||||||
|  |           git_push_flags: '--force' | ||||||
|  |           # specify a name for the review app | ||||||
|  |           review_app_name: nginx-buildpack-${{ github.event.pull_request.number }} | ||||||
|  |           ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }} | ||||||
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | .idea | ||||||
							
								
								
									
										20
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								Makefile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | |||||||
|  | shellcheck: | ||||||
|  | ifeq ($(shell shellcheck > /dev/null 2>&1 ; echo $$?),127) | ||||||
|  | ifeq ($(shell uname),Darwin) | ||||||
|  | 	brew install shellcheck | ||||||
|  | else | ||||||
|  | 	sudo add-apt-repository 'deb http://archive.ubuntu.com/ubuntu trusty-backports main restricted universe multiverse' | ||||||
|  | 	sudo apt-get update -qq && sudo apt-get install -qq -y shellcheck | ||||||
|  | endif | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | ci-dependencies: shellcheck | ||||||
|  |  | ||||||
|  | lint: | ||||||
|  | 	@echo linting... | ||||||
|  | 	@$(QUIET) find ./ -maxdepth 2 -not -path '*/\.*' | xargs file | egrep "shell|bash" | awk '{ print $$1 }' | sed 's/://g' | xargs shellcheck -e SC2069 | ||||||
|  |  | ||||||
|  | setup: | ||||||
|  | 	$(MAKE) ci-dependencies | ||||||
|  |  | ||||||
|  | test: setup lint | ||||||
							
								
								
									
										55
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										55
									
								
								README.md
									
									
									
									
									
								
							| @ -1,20 +1,53 @@ | |||||||
| # NGINX Buildpack for Dokku - Hosting static pages | # heroku-buildpack-nginx | ||||||
| This buildpack has been successfully run on Digital Ocean instances of Ubuntu 14.04 (Status: Jan 2015). It might also work with different configurations. |  | ||||||
|  |  | ||||||
| ## Purpose | This is the official dokku buildpack for static websites, powered by nginx. | ||||||
| `buildpack-nginx` provides a simple, low overhead way of hosting static pages and websites on Dokku. Just add the `.env` and `.static` file to the root directory of your website as described below. |  | ||||||
|  |  | ||||||
| ## Usage | ## Usage | ||||||
| 1. Add a file with the name `.env` in the root of your directory with the following content: `export BUILDPACK_URL=https://github.com/florianheinemann/buildpack-nginx.git` |  | ||||||
| 2. Add another, *empty* file called `.static` to your root directory of your web project. It signals that this buildpack shall be used |  | ||||||
| 3. Push your project to Dokku |  | ||||||
|  |  | ||||||
| All static files that you want to serve should be in the root directory of your repository. No need to use a seperate `www` folder. `buildpack-nginx` will automatically download the buildpack, download NGINX, compile it, and install it. The next time you push your project, the buildpack will reuse the precompiled binaries.  | All static files that you want to serve should be in the root directory of your repository. No need to use a separate `www` folder. `buildpack-nginx` will automatically download the buildpack, download NGINX, compile it, and install it. The next time you push your project, the buildpack will reuse the precompiled binaries. | ||||||
|  |  | ||||||
| ## NGINX CONFIGURATION | ### Dokku | ||||||
| Override default configuration by adding `nginx.conf.erb` in the root directory |  | ||||||
|  | To trigger detection of this buildpack you need to add a dotfile: | ||||||
|  |  | ||||||
|  | Add an *empty* file called `.static` to your root directory of your web project (regardless if you use a custom value for NGINX_ROOT) | ||||||
|  |  | ||||||
|  | ### Heroku | ||||||
|  |  | ||||||
|  | Heroku users can use this buildpack by running the following command: | ||||||
|  |  | ||||||
|  | ``` | ||||||
|  | heroku buildpacks:set https://github.com/dokku/buildpack-nginx.git | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ## Configuration | ||||||
|  |  | ||||||
|  | ### Custom nginx root | ||||||
|  |  | ||||||
|  | You can override the nginx root via setting the `NGINX_ROOT` environment variable. This should be a relative path in your repository. | ||||||
|  |  | ||||||
|  | ```shell | ||||||
|  | # where the app is named `static-app` | ||||||
|  | # and the root dir is _site | ||||||
|  | dokku config:set static-app NGINX_ROOT=_site | ||||||
|  | ```` | ||||||
|  |  | ||||||
|  | ### Default to index for history routing | ||||||
|  |  | ||||||
|  | By default, this buildpack will 404 if a requested file is not found. For static sites that use the browser's history router to show the correct context, setting the `NGINX_DEFAULT_REQUEST` to a specific file will override this. | ||||||
|  |  | ||||||
|  | ```shell | ||||||
|  | # where the app is named `static-app` | ||||||
|  | # and the desired default response is index.html | ||||||
|  | dokku config:set static-app NGINX_ROOT=index.html | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | ### Custom nginx config file | ||||||
|  |  | ||||||
|  | You may completely override the built-in nginx config by placing an `app-nginx.conf.sigil` file in the root, modeled after our own [`conf/app-nginx.conf.sigil`](https://github.com/dokku/buildpack-nginx/blob/master/conf/app-nginx.conf.sigil). This will be used inside of the container, and not by the host Dokku instance. See the [sigil project](https://github.com/gliderlabs/sigil) for more information concerning the sigil format. | ||||||
|  |  | ||||||
| ## Credits and License | ## Credits and License | ||||||
| `buildpack-nginx` is licensed under the CC0 1.0 Universal license and has been informed by many similar projects on the web |  | ||||||
|  | `buildpack-nginx` is licensed under the CC0 1.0 Universal license and has been informed by many similar projects on the web. | ||||||
|  |  | ||||||
| [Florian Heinemann](http://twitter.com/TheSumOfAll/) | [Florian Heinemann](http://twitter.com/TheSumOfAll/) | ||||||
|  | |||||||
							
								
								
									
										28
									
								
								bin/ci-pre-deploy
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								bin/ci-pre-deploy
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,28 @@ | |||||||
|  | #!/bin/sh -l | ||||||
|  | if [ "$IS_REVIEW_APP" = "true" ]; then | ||||||
|  |   git config --global user.name 'Dokku Bot' | ||||||
|  |   git config --global user.email no-reply@dokku.com | ||||||
|  |  | ||||||
|  |   echo "-----> Purging repo cache" | ||||||
|  |   ssh "$SSH_REMOTE" -- repo:purge-cache "$APP_NAME" | ||||||
|  |  | ||||||
|  |   echo "-----> Setting the test domain name" | ||||||
|  |   ssh "$SSH_REMOTE" -- domains:set "$APP_NAME" "$APP_NAME.dokku.net" | ||||||
|  |  | ||||||
|  |   echo "-----> Ensure test includes vendored app-nginx.conf.sigil" | ||||||
|  |   cp conf/app-nginx.conf.sigil app-nginx.conf.sigil | ||||||
|  |   git add app-nginx.conf.sigil | ||||||
|  |   git commit -qm "feat: specify custom app-nginx.conf.sigil" | ||||||
|  |  | ||||||
|  |   echo "-----> Ensure test includes vendored mime.types" | ||||||
|  |   cp conf/mime.types mime.types | ||||||
|  |   git add mime.types | ||||||
|  |   git commit -qm "feat: specify custom mime.types" | ||||||
|  |  | ||||||
|  |   echo "-----> Setting the buildpack to the current ref $GITHUB_HEAD_REF" | ||||||
|  |   echo "https://github.com/${GITHUB_REPOSITORY}.git#$GITHUB_HEAD_REF" > .buildpacks | ||||||
|  |   git add .buildpacks | ||||||
|  |   git commit -qm "feat: specify $GITHUB_SHA as buildpack" | ||||||
|  |  | ||||||
|  |   git rev-parse HEAD >ci-commit-override | ||||||
|  | fi | ||||||
							
								
								
									
										152
									
								
								bin/compile
									
									
									
									
									
								
							
							
						
						
									
										152
									
								
								bin/compile
									
									
									
									
									
								
							| @ -1,87 +1,107 @@ | |||||||
| #!/usr/bin/env bash | #!/usr/bin/env bash | ||||||
| # bin/compile <build-dir> <cache-dir> | # bin/compile <build-dir> <cache-dir> | ||||||
|  | set -eo pipefail | ||||||
|  | [[ $TRACE ]] && set -x | ||||||
|  |  | ||||||
| set -e | NGINX_VERSION="1.23.1" | ||||||
| set -o pipefail |  | ||||||
|  |  | ||||||
| # Nginx 1.6.2 |  | ||||||
| NGINX_VERSION="1.6.2" |  | ||||||
| NGINX_TARBALL="nginx-${NGINX_VERSION}.tar.gz" | NGINX_TARBALL="nginx-${NGINX_VERSION}.tar.gz" | ||||||
| PCRE_VERSION="8.38" | PCRE_VERSION="10.40" | ||||||
| PCRE_TARBALL="pcre-${PCRE_VERSION}.tar.gz" | PCRE_TARBALL="pcre2-${PCRE_VERSION}.tar.gz" | ||||||
| ZLIB_VERSION="1.2.8" | SIGIL_VERSION="0.9.0" | ||||||
|  | SIGIL_TARBALL="gliderlabs-sigil_${SIGIL_VERSION}_linux_amd64.tgz" | ||||||
|  | ZLIB_VERSION="1.2.12" | ||||||
| ZLIB_TARBALL="zlib-${ZLIB_VERSION}.tar.gz" | ZLIB_TARBALL="zlib-${ZLIB_VERSION}.tar.gz" | ||||||
|  |  | ||||||
|  | suppress() { | ||||||
|  |   /bin/rm --force /tmp/surpress.out 2>/dev/null | ||||||
|  |   # shellcheck disable=SC2069 | ||||||
|  |   "$@" 2>&1 >/tmp/surpress.out || cat /tmp/surpress.out | ||||||
|  |   /bin/rm /tmp/surpress.out | ||||||
|  | } | ||||||
|  |  | ||||||
| # parse and derive params | # parse and derive params | ||||||
| BUILD_DIR=$1 | BUILD_DIR=$1 | ||||||
| CACHE_DIR=$2 | CACHE_DIR=$2 | ||||||
| CUR_DIR=`cd $(dirname $0); cd ..; pwd` | CUR_DIR=$(cd "$(dirname "$0")" && cd .. && pwd) | ||||||
|  |  | ||||||
| mkdir -p $BUILD_DIR $CACHE_DIR | mkdir -p "$BUILD_DIR" "$CACHE_DIR" | ||||||
|  |  | ||||||
| if [[ ! -e "$BUILD_DIR/www" ]]; then | if [[ ! -e "${BUILD_DIR}/www" ]]; then | ||||||
|   echo "-----> copy static files to www" |   echo "-----> Copy static files to www" | ||||||
|   rm -rf $CACHE_DIR/www |   rm -rf "${CACHE_DIR}/www" | ||||||
|   mkdir -p $CACHE_DIR/www |   mkdir -p "${CACHE_DIR}/www" | ||||||
|   mv $BUILD_DIR/* $CACHE_DIR/www |  | ||||||
|   mkdir -p $BUILD_DIR/www |   # shellcheck disable=SC2086 | ||||||
|   mv $CACHE_DIR/www/* $BUILD_DIR/www |   mv $BUILD_DIR/* "${CACHE_DIR}/www" | ||||||
|   # Check for an copy the nginx conf file override to the build dir |   mkdir -p "${BUILD_DIR}/www" | ||||||
|   [[ -f "$BUILD_DIR/www/nginx.conf.erb" ]] && mv $BUILD_DIR/www/nginx.conf.erb $BUILD_DIR |  | ||||||
|   [[ -f "$BUILD_DIR/www/CHECKS" ]] && mv $BUILD_DIR/www/CHECKS $BUILD_DIR |   # shellcheck disable=SC2086 | ||||||
|   rm -rf $CACHE_DIR/www |   mv ${CACHE_DIR}/www/* "${BUILD_DIR}/www" | ||||||
|  |   # Check for a copy the nginx conf file override to the build dir | ||||||
|  |   [[ -f "${BUILD_DIR}/www/nginx.conf.erb" ]] && mv "${BUILD_DIR}/www/nginx.conf.erb" "${BUILD_DIR}" | ||||||
|  |   [[ -f "${BUILD_DIR}/www/nginx.conf.sigil" ]] && mv "${BUILD_DIR}/www/nginx.conf.sigil" "${BUILD_DIR}" | ||||||
|  |   [[ -f "${BUILD_DIR}/www/app-nginx.conf.sigil" ]] && mv "${BUILD_DIR}/www/app-nginx.conf.sigil" "${BUILD_DIR}" | ||||||
|  |   [[ -f "${BUILD_DIR}/www/mime.types" ]] && mv "${BUILD_DIR}/www/mime.types" "${BUILD_DIR}" | ||||||
|  |   [[ -f "${BUILD_DIR}/www/CHECKS" ]] && mv "${BUILD_DIR}/www/CHECKS" "${BUILD_DIR}" | ||||||
|  |   [[ -f "${BUILD_DIR}/www/app.json" ]] && mv "${BUILD_DIR}/www/app.json" "${BUILD_DIR}" | ||||||
|  |   rm -rf "${CACHE_DIR}/www" | ||||||
| fi | fi | ||||||
|  |  | ||||||
| cd $CACHE_DIR | cd "$CACHE_DIR" | ||||||
|  |  | ||||||
| if [[ ! -d "${NGINX_TARBALL%.tar.gz}" ]]; then | if [[ ! -d "${NGINX_TARBALL%.tar.gz}" ]]; then | ||||||
|   echo "-----> download and unzip nginx" |   echo "-----> Download and unzip nginx ${NGINX_VERSION} via http" | ||||||
|   curl "http://nginx.org/download/${NGINX_TARBALL}" -o "${NGINX_TARBALL}" |   curl -sSL "http://nginx.org/download/${NGINX_TARBALL}" -o "${NGINX_TARBALL}" | ||||||
|   tar xzf "${NGINX_TARBALL}" && rm -f "${NGINX_TARBALL}" |   tar xzf "${NGINX_TARBALL}" && rm -f "${NGINX_TARBALL}" | ||||||
| fi | fi | ||||||
|  |  | ||||||
| if [[ ! -d "${PCRE_TARBALL%.tar.gz}" ]]; then | if [[ ! -d "${PCRE_TARBALL%.tar.gz}" ]]; then | ||||||
|   echo "-----> download and unzip pcre" |   echo "-----> Download and unzip pcre ${PCRE_VERSION} via http" | ||||||
|   curl "http://ftp.csx.cam.ac.uk/pub/software/programming/pcre/${PCRE_TARBALL}" -o "${PCRE_TARBALL}" |   curl -sSL "https://github.com/PCRE2Project/pcre2/releases/download/pcre2-${PCRE_VERSION}/${PCRE_TARBALL}" -o "${PCRE_TARBALL}" | ||||||
|   tar xzf "${PCRE_TARBALL}" && rm -f "${PCRE_TARBALL}" |   tar xzf "${PCRE_TARBALL}" && rm -f "${PCRE_TARBALL}" | ||||||
| fi | fi | ||||||
|  |  | ||||||
| if [[ ! -d "${ZLIB_TARBALL%.tar.gz}" ]]; then | if [[ ! -d "${ZLIB_TARBALL%.tar.gz}" ]]; then | ||||||
|   echo "-----> download and unzip zlib" |   echo "-----> Download and unzip zlib ${ZLIB_VERSION} via http" | ||||||
|   curl "http://zlib.net/${ZLIB_TARBALL}" -o "${ZLIB_TARBALL}" |   curl -sSL "https://github.com/madler/zlib/archive/v${ZLIB_VERSION}.tar.gz" -o "${ZLIB_TARBALL}" | ||||||
|   tar xzf "${ZLIB_TARBALL}" && rm -rf "${ZLIB_TARBALL}" |   tar xzf "${ZLIB_TARBALL}" && rm -rf "${ZLIB_TARBALL}" | ||||||
| fi | fi | ||||||
|  |  | ||||||
|  | if [[ ! -f "sigil" ]]; then | ||||||
|  |   echo "-----> Download and unzip sigil ${SIGIL_VERSION} via http" | ||||||
|  |   curl -sSL "https://github.com/gliderlabs/sigil/releases/download/v${SIGIL_VERSION}/gliderlabs-sigil_${SIGIL_VERSION}_linux_amd64.tgz" -o "${SIGIL_TARBALL}" | ||||||
|  |   tar xzf "${SIGIL_TARBALL}" && rm -rf "${SIGIL_TARBALL}" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | mkdir -p "$BUILD_DIR/sigil" | ||||||
|  | cp -r gliderlabs-sigil-amd64 "$BUILD_DIR/sigil/sigil" | ||||||
|  |  | ||||||
| cd "nginx-${NGINX_VERSION}" | cd "nginx-${NGINX_VERSION}" | ||||||
| if [[ ! -f "${CACHE_DIR}/bin/nginx" ]]; then | if [[ ! -f "${CACHE_DIR}/bin/nginx" ]]; then | ||||||
|   echo "-----> compile static nginx" |   echo "-----> Compiling static nginx binary" | ||||||
|   mkdir $BUILD_DIR/nginx |   mkdir "$BUILD_DIR/nginx" | ||||||
|   ./configure \ |   suppress ./configure \ | ||||||
|     --with-cpu-opt=generic \ |     --with-cpu-opt=generic \ | ||||||
|     --prefix=$BUILD_DIR/nginx \ |     --prefix="$BUILD_DIR/nginx" \ | ||||||
|     --with-pcre=../pcre-${PCRE_VERSION} \ |     --with-pcre=../pcre2-${PCRE_VERSION} \ | ||||||
|     --sbin-path=. \ |     --sbin-path=. \ | ||||||
|     --pid-path=./nginx.pid \ |     --pid-path=./nginx.pid \ | ||||||
|     --conf-path=./nginx.conf \ |     --conf-path=./nginx.conf \ | ||||||
|     --with-ld-opt="-static" \ |     --with-ld-opt="-static" \ | ||||||
|     --with-http_spdy_module \ |  | ||||||
|     --with-http_stub_status_module \ |     --with-http_stub_status_module \ | ||||||
|     --with-http_gzip_static_module \ |     --with-http_gzip_static_module \ | ||||||
|     --with-file-aio \ |     --with-file-aio \ | ||||||
|     --with-zlib=../zlib-${ZLIB_VERSION} \ |     --with-zlib=../zlib-${ZLIB_VERSION} \ | ||||||
|     --with-pcre \ |     --with-pcre \ | ||||||
|     --with-cc-opt="-O2 -static -static-libgcc" \ |     --with-cc-opt="-O2 -static -static-libgcc" \ | ||||||
|     --without-http_charset_module \ |  | ||||||
|     --without-http_ssi_module \ |     --without-http_ssi_module \ | ||||||
|     --without-http_userid_module \ |     --without-http_userid_module \ | ||||||
|     --without-http_access_module \ |     --without-http_access_module \ | ||||||
|     --without-http_auth_basic_module \ |  | ||||||
|     --without-http_autoindex_module \ |     --without-http_autoindex_module \ | ||||||
|     --without-http_geo_module \ |     --without-http_geo_module \ | ||||||
|     --without-http_map_module \ |     --without-http_map_module \ | ||||||
|     --without-http_split_clients_module \ |     --without-http_split_clients_module \ | ||||||
|     --without-http_referer_module \ |     --without-http_referer_module \ | ||||||
|     --without-http_proxy_module \ |  | ||||||
|     --without-http_fastcgi_module \ |     --without-http_fastcgi_module \ | ||||||
|     --without-http_uwsgi_module \ |     --without-http_uwsgi_module \ | ||||||
|     --without-http_scgi_module \ |     --without-http_scgi_module \ | ||||||
| @ -93,53 +113,67 @@ if [[ ! -f "${CACHE_DIR}/bin/nginx" ]]; then | |||||||
|     --without-http_upstream_keepalive_module \ |     --without-http_upstream_keepalive_module \ | ||||||
|     --without-mail_pop3_module \ |     --without-mail_pop3_module \ | ||||||
|     --without-mail_imap_module \ |     --without-mail_imap_module \ | ||||||
|     --without-mail_smtp_module |     --without-mail_smtp_module \ | ||||||
|  |     --with-http_realip_module | ||||||
|  |  | ||||||
|   sed -i "/CFLAGS/s/ \-O //g" objs/Makefile |   sed -i "/CFLAGS/s/ \-O //g" objs/Makefile | ||||||
|  |  | ||||||
|   make && make install |   suppress make && suppress make install | ||||||
|  |  | ||||||
|   rm -rf $CACHE_DIR/bin && mkdir -p $CACHE_DIR/bin/ |   rm -rf "${CACHE_DIR:?}/bin" && mkdir -p "$CACHE_DIR/bin/" | ||||||
|   cp -r $BUILD_DIR/nginx/* $CACHE_DIR/bin/ |   # shellcheck disable=SC2086 | ||||||
|  |   cp -r $BUILD_DIR/nginx/* "$CACHE_DIR/bin/" | ||||||
|  |  | ||||||
| else | else | ||||||
|   echo "-----> reuse nginx from cache" |   echo "-----> Reusing nginx binary from cache" | ||||||
|   mkdir -p $BUILD_DIR/nginx |   mkdir -p "$BUILD_DIR/nginx" | ||||||
|   cp -r $CACHE_DIR/bin/* $BUILD_DIR/nginx/ |   # shellcheck disable=SC2086 | ||||||
|  |   cp -r $CACHE_DIR/bin/* "$BUILD_DIR/nginx/" | ||||||
| fi | fi | ||||||
|  |  | ||||||
| # Update the PATH | # Update the PATH | ||||||
| mkdir -p $BUILD_DIR/.profile.d | mkdir -p "$BUILD_DIR/.profile.d" | ||||||
| cat > $BUILD_DIR/.profile.d/nginx.sh <<"EOF" | cat >"$BUILD_DIR/.profile.d/nginx.sh" <<"EOF" | ||||||
| export PATH="$PATH:$HOME/nginx" | export PATH="$PATH:$HOME/nginx" | ||||||
| EOF | EOF | ||||||
|  |  | ||||||
| cd $CUR_DIR | cd "$CUR_DIR" | ||||||
|  |  | ||||||
|  | # Add support for app-nginx.conf.sigil | ||||||
|  | if [ -f "$BUILD_DIR/app-nginx.conf.sigil" ]; then | ||||||
|  |   echo "-----> Using user provided app-nginx.conf.sigil" | ||||||
|  |   cp "$BUILD_DIR/app-nginx.conf.sigil" "$BUILD_DIR/nginx/app-nginx.conf.sigil" | ||||||
|  |  | ||||||
| # Test for user override on nginx config... | # Allow deprecated nginx.conf.erb | ||||||
| if [ -f $BUILD_DIR/nginx.conf.erb ] ; then | elif [ -f "$BUILD_DIR/nginx.conf.erb" ]; then | ||||||
|   echo "-----> using user provided nginx.conf.erb" |   echo "-----> DEPRECATED: Using user provided nginx.conf.erb" | ||||||
|   cp $BUILD_DIR/nginx.conf.erb $BUILD_DIR/nginx/nginx.conf.erb |   cp "$BUILD_DIR/nginx.conf.erb" "$BUILD_DIR/nginx/nginx.conf.erb" | ||||||
|   #rm $BUILD_DIR/nginx.conf.erb |  | ||||||
|  |  | ||||||
| # ...else, force default file | # ...else, force default file | ||||||
| else | else | ||||||
|   echo "-----> using default nginx.conf.erb" |   echo "-----> Using default app-nginx.conf.sigil" | ||||||
|   cp conf/nginx.conf.erb $BUILD_DIR/nginx/nginx.conf.erb |   cp conf/app-nginx.conf.sigil "$BUILD_DIR/nginx/app-nginx.conf.sigil" | ||||||
| fi | fi | ||||||
|  |  | ||||||
| # build mime.types unless overridden by user | # build mime.types unless overridden by user | ||||||
| #if [ ! -f $BUILD_DIR/mime.types ] ; then | if [ -f "$BUILD_DIR/mime.types" ]; then | ||||||
| echo "-----> using default mime.types" |   echo "-----> Using user provided mime.types" | ||||||
| cp conf/mime.types $BUILD_DIR/nginx/mime.types |   cp "$BUILD_DIR/mime.types" "$BUILD_DIR/nginx/mime.types" | ||||||
| #fi |  | ||||||
|  | else | ||||||
|  |   echo "-----> Using default mime.types" | ||||||
|  |   cp conf/mime.types "$BUILD_DIR/nginx/mime.types" | ||||||
|  | fi | ||||||
|  |  | ||||||
| # build a startup script | # build a startup script | ||||||
| cat <<EOF >"$BUILD_DIR/start_nginx" | cat <<EOF >"$BUILD_DIR/start_nginx" | ||||||
| #!/usr/bin/env bash | #!/usr/bin/env bash | ||||||
| rm -f /app/nginx/nginx.conf | rm -f /app/nginx/nginx.conf | ||||||
| erb /app/nginx/nginx.conf.erb > /app/nginx/nginx.conf | if [[ -f /app/nginx/app-nginx.conf.sigil ]]; then | ||||||
|  |   /app/sigil/sigil -f /app/nginx/app-nginx.conf.sigil NGINX_ROOT="\$NGINX_ROOT" NGINX_DEFAULT_REQUEST="\$NGINX_DEFAULT_REQUEST" PORT="\$PORT" | cat -s > /app/nginx/nginx.conf | ||||||
|  | else | ||||||
|  |   erb /app/nginx/nginx.conf.erb > /app/nginx/nginx.conf | ||||||
|  | fi | ||||||
| exec /app/nginx/nginx -p /app/nginx -c /app/nginx/nginx.conf | exec /app/nginx/nginx -p /app/nginx -c /app/nginx/nginx.conf | ||||||
| EOF | EOF | ||||||
| chmod +x "$BUILD_DIR/start_nginx" | chmod +x "$BUILD_DIR/start_nginx" | ||||||
|  | |||||||
							
								
								
									
										12
									
								
								bin/detect
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								bin/detect
									
									
									
									
									
								
							| @ -1,9 +1,11 @@ | |||||||
| #!/usr/bin/env bash | #!/usr/bin/env bash | ||||||
| set -e | # bin/detect <build-dir> <cache-dir> | ||||||
|  | set -eo pipefail | ||||||
|  | [[ $TRACE ]] && set -x | ||||||
|  |  | ||||||
| if [[ -f $1/.static ]]; then | # Exit early if app is clearly not an nginx app | ||||||
|   echo ".static" | if [[ ! -f "$1/.static" ]]; then | ||||||
|   exit 0 |  | ||||||
| else |  | ||||||
|   exit 1 |   exit 1 | ||||||
| fi | fi | ||||||
|  |  | ||||||
|  | echo ".static" | ||||||
|  | |||||||
| @ -1,10 +1,11 @@ | |||||||
| #!/usr/bin/env bash | #!/usr/bin/env bash | ||||||
| # bin/release <build-dir> | # bin/release <build-dir> | ||||||
|  | set -eo pipefail | ||||||
|  | [[ $TRACE ]] && set -x | ||||||
|  |  | ||||||
| cat <<EOF | cat <<EOF | ||||||
| --- | --- | ||||||
|  | addons: [] | ||||||
| addons: |  | ||||||
| default_process_types: | default_process_types: | ||||||
|   web: /app/start_nginx |   web: /app/start_nginx | ||||||
| EOF | EOF | ||||||
|  | |||||||
							
								
								
									
										33
									
								
								conf/app-nginx.conf.sigil
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								conf/app-nginx.conf.sigil
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | |||||||
|  | worker_processes 1; | ||||||
|  | error_log stderr; | ||||||
|  | pid nginx.pid; | ||||||
|  | daemon off; | ||||||
|  |  | ||||||
|  | events { | ||||||
|  |   worker_connections 768; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | http { | ||||||
|  |   types_hash_max_size 2048; | ||||||
|  |   include mime.types; | ||||||
|  |   charset UTF-8; | ||||||
|  |   server { | ||||||
|  |     listen {{ $.PORT }}; | ||||||
|  |     server_name  _; | ||||||
|  |     {{ if ne $.NGINX_ROOT "" }} | ||||||
|  |       root /app/www/{{ $.NGINX_ROOT }}; | ||||||
|  |     {{ else }} | ||||||
|  |       root /app/www; | ||||||
|  |     {{ end }} | ||||||
|  |     index index.html; | ||||||
|  |     port_in_redirect off; | ||||||
|  |  | ||||||
|  |     location / { | ||||||
|  |       {{ if ne $.NGINX_DEFAULT_REQUEST "" }} | ||||||
|  |         try_files $uri $uri/ /{{ $.NGINX_DEFAULT_REQUEST }}; | ||||||
|  |       {{ else }} | ||||||
|  |         try_files $uri $uri/ =404; | ||||||
|  |       {{ end }} | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -14,6 +14,7 @@ types { | |||||||
|     text/vnd.sun.j2me.app-descriptor      jad; |     text/vnd.sun.j2me.app-descriptor      jad; | ||||||
|     text/vnd.wap.wml                      wml; |     text/vnd.wap.wml                      wml; | ||||||
|     text/x-component                      htc; |     text/x-component                      htc; | ||||||
|  |     text/vtt                              vtt; | ||||||
|  |  | ||||||
|     image/png                             png; |     image/png                             png; | ||||||
|     image/tiff                            tif tiff; |     image/tiff                            tif tiff; | ||||||
|  | |||||||
| @ -1,23 +0,0 @@ | |||||||
| worker_processes 1; |  | ||||||
| error_log stderr; |  | ||||||
| pid nginx.pid; |  | ||||||
| daemon off; |  | ||||||
|  |  | ||||||
| events { |  | ||||||
|   worker_connections 768; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| http { |  | ||||||
|   types_hash_max_size 2048; |  | ||||||
|   include mime.types; |  | ||||||
|   server { |  | ||||||
|     listen <%= ENV["PORT"] %>; |  | ||||||
|     server_name  _; |  | ||||||
|     <% if ENV["ROOT"] %> |  | ||||||
|       root /app/www/<%= ENV["ROOT"] %>; |  | ||||||
|     <% else %> |  | ||||||
|       root /app/www; |  | ||||||
|     <% end %> |  | ||||||
|     index index.html; |  | ||||||
|   } |  | ||||||
| } |  | ||||||
							
								
								
									
										45
									
								
								site/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								site/index.html
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,45 @@ | |||||||
|  | <!doctype html> | ||||||
|  | <html> | ||||||
|  | <head> | ||||||
|  |     <title>Example Domain</title> | ||||||
|  |  | ||||||
|  |     <meta charset="utf-8" /> | ||||||
|  |     <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> | ||||||
|  |     <meta name="viewport" content="width=device-width, initial-scale=1" /> | ||||||
|  |     <style type="text/css"> | ||||||
|  |     body { | ||||||
|  |         background-color: #f0f0f2; | ||||||
|  |         margin: 0; | ||||||
|  |         padding: 0; | ||||||
|  |         font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; | ||||||
|  |     } | ||||||
|  |     div { | ||||||
|  |         width: 600px; | ||||||
|  |         margin: 5em auto; | ||||||
|  |         padding: 2em; | ||||||
|  |         background-color: #fdfdff; | ||||||
|  |         border-radius: 0.5em; | ||||||
|  |         box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02); | ||||||
|  |     } | ||||||
|  |     a:link, a:visited { | ||||||
|  |         color: #38488f; | ||||||
|  |         text-decoration: none; | ||||||
|  |     } | ||||||
|  |     @media (max-width: 700px) { | ||||||
|  |         div { | ||||||
|  |             margin: 0 auto; | ||||||
|  |             width: auto; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |     </style> | ||||||
|  | </head> | ||||||
|  |  | ||||||
|  | <body> | ||||||
|  | <div> | ||||||
|  |     <h1>Example Domain</h1> | ||||||
|  |     <p>This domain is for use in illustrative examples in documents. You may use this | ||||||
|  |     domain in literature without prior coordination or asking for permission.</p> | ||||||
|  |     <p><a href="https://www.iana.org/domains/example">More information...</a></p> | ||||||
|  | </div> | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
							
								
								
									
										2
									
								
								site/robots.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								site/robots.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,2 @@ | |||||||
|  | User-agent: * | ||||||
|  | Disallow: / | ||||||
		Reference in New Issue
	
	Block a user
	