Compare commits

..
61 Commits
Author SHA1 Message Date
Jose Diaz-GonzalezandGitHub 59ea0b94e1 Merge pull request #57 from dokku/review-app-cleanup
Split out workflows so that review app cleanup is properly run
2022-09-10 18:23:10 -04:00
Jose Diaz-Gonzalez 301d00c751 fix: name workflows correctly 2022-09-10 18:20:42 -04:00
Jose Diaz-Gonzalez 28328e4d90 refactor: split out workflows so that review app cleanup is properly run
The old setup - copy-pasted from the internet somewhere - was incorrect based on how github actions works. *sigh*
2022-09-10 18:19:27 -04:00
Jose Diaz-GonzalezandGitHub dce20c0a8f Merge pull request #56 from dokku/auto-deploy
Test this buildpack by deploying to a dokku server
2022-09-10 18:12:48 -04:00
Jose Diaz-Gonzalez 0e7bef86f9 chore: ensure robots do not crawl these test domains 2022-09-10 18:09:55 -04:00
Jose Diaz-Gonzalez faf2a70272 fix: use correct domain name 2022-09-10 18:09:06 -04:00
Jose Diaz-Gonzalez f981b138ed fix: use a dokku.net subdomain to avoid hsts issues 2022-09-10 18:04:40 -04:00
Jose Diaz-Gonzalez 7794c2c36f chore: add some debugging information 2022-09-10 18:02:11 -04:00
Jose Diaz-Gonzalez 22619107ab chore: silence ci hook 2022-09-10 17:58:38 -04:00
Jose Diaz-Gonzalez 1a28ec8509 feat: purge cache on every review app deploy
This ensures we test the currently built nginx binary.
2022-09-10 17:53:46 -04:00
Jose Diaz-Gonzalez e28d2049e5 debug: see what directory we are in 2022-09-10 17:42:55 -04:00
Jose Diaz-Gonzalez 6a73313edb fix: always run the first job 2022-09-10 17:41:00 -04:00
Jose Diaz-Gonzalez 648d73fda6 fix: set current buildpack as the buildpack to use 2022-09-10 17:38:10 -04:00
Jose Diaz-Gonzalez 1769636cc8 tests: test deploys via github action 2022-09-10 17:31:47 -04:00
Jose Diaz-Gonzalez 6a9c79f8d0 feat: add initial files needed to deploy this as a site for testing purposes 2022-09-10 17:24:45 -04:00
Jose Diaz-GonzalezandGitHub 7a1b16877d Merge pull request #55 from dokku/cleanup
chore: run shfmt
2022-09-10 17:16:24 -04:00
Jose Diaz-Gonzalez c50c220ba4 chore: run shfmt 2022-09-10 17:13:33 -04:00
Jose Diaz-GonzalezandGitHub c2273de014 chore: drop ssl module 2022-09-10 17:10:30 -04:00
Jose Diaz-GonzalezandGitHub 91c41476ae feat: add ssl module 2022-09-10 16:55:10 -04:00
Jose Diaz-GonzalezandGitHub 90c8bd9365 Merge pull request #54 from dokku/53-custom-static-routing
feat: allow overriding default 404 response with custom file
2022-08-07 19:11:02 -04:00
Jose Diaz-Gonzalez 89196adbf1 feat: allow overriding default 404 response with custom file
This allows folks the ability to restore the previous routing functionality used by static sites backed by VueJS (as an example).

Note that all requests routed this way will respond with a '200 OK' on the server, potentially causing SEO issues.

Closes #53
2022-08-07 19:10:31 -04:00
Jose Diaz-GonzalezandGitHub dbbbcc2c3e Merge pull request #52 from joeyates/master
Enable http_auth
2022-08-07 19:08:54 -04:00
Jose Diaz-Gonzalez daa9549fb7 docs: call out customizations separately 2022-08-07 19:08:09 -04:00
Joe YatesandGitHub 66b91f18e4 Enable http_auth 2021-12-28 20:45:30 +01:00
Jose Diaz-GonzalezandGitHub 6c1abc0547 Merge pull request #51 from zachahn/patch-1
Respond with a 404 when the file doesn't exist
2021-12-02 22:47:33 -05:00
Zach AhnandGitHub 6672b6257a Respond with a 404 when the file doesn't exist
Prior to this, I was seeing the successful HTTP status 200 when
requesting files that did not exist.

With this change, the server sends back Nginx's default 404 page instead
of the home page.
2021-12-02 22:19:05 -05:00
Jose Diaz-GonzalezandGitHub 758bf7c39c Merge pull request #47 from dokku/josegonzalez-patch-1
fix: update pcre and pull from new location
2021-11-06 20:49:44 -04:00
Jose Diaz-GonzalezandGitHub 5a16fba7d1 fix: add missing quote 2021-11-06 20:46:18 -04:00
Jose Diaz-GonzalezandGitHub 8cb1d16d7e fix: update pcre and pull from new location
ftp.pcre.org is no longer supported
2021-11-06 20:24:16 -04:00
Jose Diaz-GonzalezandGitHub aa0ebb8f47 Update README.md 2021-03-22 01:19:04 -04:00
Jose Diaz-GonzalezandGitHub d5048c5fe3 Merge pull request #44 from vieditcom/patch-1
Update README.md - Typo
2020-11-23 10:14:28 -05:00
Viedit comandGitHub ec734ad787 Update README.md - Typo
seperate > separate
2020-11-22 13:07:12 +03:00
Jose Diaz-GonzalezandGitHub 150d82865b Merge pull request #42 from sent-hil/master
Update Readme to include example for setting NGINX_ROOT
2020-07-14 10:24:25 -04:00
Senthil Arivudainambi cd84b47fd1 Update Readme to include example for setting NGINX_ROOT 2020-07-05 18:17:34 -07:00
Jose Diaz-GonzalezandGitHub e06b1e4df1 Merge pull request #41 from dokku/40-charset
feat: use charset utf8 by default
2020-06-11 15:33:44 -04:00
Jose Diaz-GonzalezandGitHub 0d2e4c3ee6 feat: use charset utf-8 by default
Closes #40
2020-06-11 15:33:31 -04:00
Jose Diaz-GonzalezandGitHub 1f534f7bc6 feat: enable the charset module by default 2020-06-11 15:31:47 -04:00
Jose Diaz-GonzalezandGitHub 149f06c3b3 Merge pull request #39 from pawurb/real_ip_module
Add real ip and proxy module
2020-04-13 12:36:17 -04:00
pawurb 99d72cc005 Add real ip and proxy module 2020-02-09 11:59:08 +01:00
Jose Diaz-GonzalezandGitHub 46d850193d fix: update message to say http instead of ftp
It's actually now downloading via ftp.
2019-08-19 15:44:16 -04:00
Jose Diaz-GonzalezandGitHub 9eae441352 Merge pull request #38 from vkurup/master
Update PCRE URL
2019-08-12 11:08:21 -04:00
Jose Diaz-GonzalezandGitHub b0ce745a1b chore: switch to https
The ftp url is simply an alias for the https version...
2019-08-12 11:08:13 -04:00
Vinod Kurup fe3a5dc54f Update PCRE URL 2019-08-11 20:52:38 -04:00
Jose Diaz-GonzalezandGitHub ad8d7c4261 Merge pull request #34 from justintemps/patch-1
Add text/vtt mime type for caption files
2019-06-17 09:55:47 -05:00
Jose Diaz-GonzalezandGitHub e8e0807a2d Merge pull request #36 from OldhamMade/feature/version-bump-of-dependencies
Update dependency versions
2019-06-17 09:55:28 -05:00
Phillip Oldham 673fd38bb2 Version bump of dependencies
- ensure pcre is requested via FTP
- bump pcre to 8.43
- bump nginx to 1.17.0
2019-06-16 09:39:00 +02:00
Justin SmithandGitHub 1945cf3645 Add text/vtt mime type for caption files
Update to include text/vtt mime type
2019-01-11 15:11:58 +01:00
Jose Diaz-GonzalezandGitHub a9b3cb1767 Merge pull request #29 from pawurb/update-nginx
Update nginx to 1.14.0
2018-08-29 09:12:05 -04:00
pawurb c6b3e74808 Update nginx to 1.14.0 2018-06-03 20:36:58 +02:00
Jose Diaz-GonzalezandGitHub ffaa249c5c Merge pull request #21 from ineffyble/master
Add port_in_redirect directive to NGINX configuration template
2017-12-18 10:55:33 -05:00
Jose Diaz-GonzalezandGitHub e31fee35bb Merge pull request #26 from nreilly/patch-1
New download location for PCRE
2017-07-16 15:32:33 -06:00
nreillyandGitHub 0b290ce1f6 New download location for PCRE
Changing to a new mirror that has updated packages.
2017-07-16 14:29:27 +08:00
Jose Diaz-GonzalezandGitHub ec0560066c Merge pull request #24 from jtstio/master
Update PCRE to 8.40 and zlib to 1.2.11
2017-07-09 21:25:44 -06:00
Florian HeinemannandJames Hale f873fe2024 UPDATE pcre and zlib 2017-07-09 09:00:31 -06:00
antoine-duchenetandJames Hale 9a82e569c1 Update Zlib to version 1.2.10 2017-07-09 08:59:58 -06:00
Effy Elden 6ecc56df72 Add port_in_redirect directive to NGINX configuration template 2017-04-15 00:29:37 +10:00
Jose Diaz-GonzalezandGitHub ed184f98fd Update README.md 2017-03-28 17:42:13 -06:00
Jose Diaz-GonzalezandGitHub 2535bd6ebb Merge pull request #16 from timaschew/patch-1
update docs how to set buildback
2017-01-10 11:07:12 -07:00
Anton WilhelmandGitHub 6d1ae20708 update docs how to set buildback 2017-01-10 03:52:33 +01:00
Jose Diaz-GonzalezandGitHub dded3b0717 Merge pull request #15 from shovon/patch-1
Update to instruction for manual setup
2017-01-05 12:25:51 -05:00
Sal RahmanandGitHub d4f93ae2b3 Update to instruction for manual setup
Manual setup used the wrong command; the parameter with application name was missing. This change adds that.
2017-01-05 03:48:38 -08:00
12 changed files with 172 additions and 29 deletions
+23
View 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.me:22/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
View 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
View File
@@ -0,0 +1 @@
.static
+24 -5
View File
@@ -1,17 +1,16 @@
# Dokku Buildpack: nginx
# heroku-buildpack-nginx
This is the official dokku buildpack for static websites, powered by nginx.
## Usage
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.
### Dokku
To trigger detection of this buildpack in Dokku, you have two options:
To trigger detection of this buildpack you need to add a dotfile:
- Automatic: Add an *empty* file called `.static` to your root directory of your web project.
- Manual: Set your `BUILDPACK_URL` via `dokku config:set BUILDPACK_URL=https://github.com/dokku/buildpack-nginx.git`
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
@@ -23,8 +22,28 @@ 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
+15
View File
@@ -0,0 +1,15 @@
#!/bin/sh -l
if [ "$IS_REVIEW_APP" = "true" ]; then
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 "-----> Setting the buildpack to the current commit"
echo "https://github.com/${GITHUB_REPOSITORY}.git#$GITHUB_SHA" > .buildpacks
git add .buildpacks
git config --global user.name 'Dokku Bot'
git config --global user.email no-reply@dokku.com
git commit -qm "feat: specify $GITHUB_SHA as buildpack"
fi
+22 -21
View File
@@ -1,25 +1,28 @@
#!/usr/bin/env bash
# bin/compile <build-dir> <cache-dir>
set -eo pipefail; [[ $TRACE ]] && set -x
set -eo pipefail
[[ $TRACE ]] && set -x
NGINX_VERSION="1.10.1"
NGINX_VERSION="1.17.0"
NGINX_TARBALL="nginx-${NGINX_VERSION}.tar.gz"
PCRE_VERSION="8.39"
PCRE_VERSION="8.45"
PCRE_TARBALL="pcre-${PCRE_VERSION}.tar.gz"
SIGIL_VERSION="0.4.0"
SIGIL_TARBALL="sigil_${SIGIL_VERSION}_Linux_x86_64.tgz"
ZLIB_VERSION="1.2.9"
ZLIB_VERSION="1.2.11"
ZLIB_TARBALL="zlib-${ZLIB_VERSION}.tar.gz"
suppress() {
/bin/rm --force /tmp/surpress.out 2>/dev/null
# shellcheck disable=SC2069
/bin/rm --force /tmp/surpress.out 2> /dev/null; "$@" 2>&1 > /tmp/surpress.out || cat /tmp/surpress.out; /bin/rm /tmp/surpress.out;
"$@" 2>&1 >/tmp/surpress.out || cat /tmp/surpress.out
/bin/rm /tmp/surpress.out
}
# parse and derive params
BUILD_DIR=$1
CACHE_DIR=$2
CUR_DIR=$(cd "$(dirname "$0")"; cd ..; pwd)
CUR_DIR=$(cd "$(dirname "$0")" && cd .. && pwd)
mkdir -p "$BUILD_DIR" "$CACHE_DIR"
@@ -47,25 +50,25 @@ fi
cd "$CACHE_DIR"
if [[ ! -d "${NGINX_TARBALL%.tar.gz}" ]]; then
echo "-----> Download and unzip nginx"
echo "-----> Download and unzip nginx ${NGINX_VERSION} via http"
curl -sSL "http://nginx.org/download/${NGINX_TARBALL}" -o "${NGINX_TARBALL}"
tar xzf "${NGINX_TARBALL}" && rm -f "${NGINX_TARBALL}"
fi
if [[ ! -d "${PCRE_TARBALL%.tar.gz}" ]]; then
echo "-----> Download and unzip pcre"
curl -sSL "http://ftp.csx.cam.ac.uk/pub/software/programming/pcre/${PCRE_TARBALL}" -o "${PCRE_TARBALL}"
echo "-----> Download and unzip pcre ${PCRE_VERSION} via http"
curl -sSL "https://downloads.sourceforge.net/project/pcre/pcre/${PCRE_VERSION}/${PCRE_TARBALL}" -o "${PCRE_TARBALL}"
tar xzf "${PCRE_TARBALL}" && rm -f "${PCRE_TARBALL}"
fi
if [[ ! -d "${ZLIB_TARBALL%.tar.gz}" ]]; then
echo "-----> Download and unzip zlib"
echo "-----> Download and unzip zlib ${ZLIB_VERSION} via http"
curl -sSL "https://github.com/madler/zlib/archive/v${ZLIB_VERSION}.tar.gz" -o "${ZLIB_TARBALL}"
tar xzf "${ZLIB_TARBALL}" && rm -rf "${ZLIB_TARBALL}"
fi
if [[ ! -f "sigil" ]]; then
echo "-----> Download and unzip sigil"
echo "-----> Download and unzip sigil ${SIGIL_VERSION} via http"
curl -sSL "https://github.com/gliderlabs/sigil/releases/download/v${SIGIL_VERSION}/${SIGIL_TARBALL}" -o "${SIGIL_TARBALL}"
tar xzf "${SIGIL_TARBALL}" && rm -rf "${SIGIL_TARBALL}"
fi
@@ -91,17 +94,14 @@ if [[ ! -f "${CACHE_DIR}/bin/nginx" ]]; then
--with-zlib=../zlib-${ZLIB_VERSION} \
--with-pcre \
--with-cc-opt="-O2 -static -static-libgcc" \
--without-http_charset_module \
--without-http_ssi_module \
--without-http_userid_module \
--without-http_access_module \
--without-http_auth_basic_module \
--without-http_autoindex_module \
--without-http_geo_module \
--without-http_map_module \
--without-http_split_clients_module \
--without-http_referer_module \
--without-http_proxy_module \
--without-http_fastcgi_module \
--without-http_uwsgi_module \
--without-http_scgi_module \
@@ -113,7 +113,8 @@ if [[ ! -f "${CACHE_DIR}/bin/nginx" ]]; then
--without-http_upstream_keepalive_module \
--without-mail_pop3_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
@@ -132,20 +133,20 @@ fi
# Update the PATH
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"
EOF
cd "$CUR_DIR"
# Add support for app-nginx.conf.sigil
if [ -f "$BUILD_DIR/app-nginx.conf.sigil" ] ; then
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"
# Allow deprecated nginx.conf.erb
elif [ -f "$BUILD_DIR/nginx.conf.erb" ] ; then
echo "-----> DEPRECATED: using user provided nginx.conf.erb"
elif [ -f "$BUILD_DIR/nginx.conf.erb" ]; then
echo "-----> DEPRECATED: Using user provided nginx.conf.erb"
cp "$BUILD_DIR/nginx.conf.erb" "$BUILD_DIR/nginx/nginx.conf.erb"
# ...else, force default file
@@ -155,7 +156,7 @@ else
fi
# build mime.types unless overridden by user
if [ -f "$BUILD_DIR/mime.types" ] ; then
if [ -f "$BUILD_DIR/mime.types" ]; then
echo "-----> Using user provided mime.types"
cp "$BUILD_DIR/mime.types" "$BUILD_DIR/nginx/mime.types"
@@ -169,7 +170,7 @@ cat <<EOF >"$BUILD_DIR/start_nginx"
#!/usr/bin/env bash
rm -f /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" PORT="\$PORT" | cat -s > /app/nginx/nginx.conf
/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
+2 -1
View File
@@ -1,6 +1,7 @@
#!/usr/bin/env bash
# bin/detect <build-dir> <cache-dir>
set -eo pipefail; [[ $TRACE ]] && set -x
set -eo pipefail
[[ $TRACE ]] && set -x
# Exit early if app is clearly not an nginx app
if [[ ! -f "$1/.static" ]]; then
+2 -1
View File
@@ -1,6 +1,7 @@
#!/usr/bin/env bash
# bin/release <build-dir>
set -eo pipefail; [[ $TRACE ]] && set -x
set -eo pipefail
[[ $TRACE ]] && set -x
cat <<EOF
---
+7 -1
View File
@@ -10,6 +10,7 @@ events {
http {
types_hash_max_size 2048;
include mime.types;
charset UTF-8;
server {
listen {{ $.PORT }};
server_name _;
@@ -19,9 +20,14 @@ http {
root /app/www;
{{ end }}
index index.html;
port_in_redirect off;
location / {
try_files $uri $uri/ /index.html;
{{ if ne $.NGINX_DEFAULT_REQUEST "" }}
try_files $uri $uri/ /{{ $.NGINX_DEFAULT_REQUEST }};
{{ else }}
try_files $uri $uri/ =404;
{{ end }}
}
}
}
+1
View File
@@ -14,6 +14,7 @@ types {
text/vnd.sun.j2me.app-descriptor jad;
text/vnd.wap.wml wml;
text/x-component htc;
text/vtt vtt;
image/png png;
image/tiff tif tiff;
+45
View 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
View File
@@ -0,0 +1,2 @@
User-agent: *
Disallow: /