mirror of
https://github.com/dokku/buildpack-nginx.git
synced 2025-06-26 10:30:46 +00:00
Compare commits
24 Commits
Author | SHA1 | Date | |
---|---|---|---|
90c8bd9365 | |||
89196adbf1 | |||
dbbbcc2c3e | |||
daa9549fb7 | |||
66b91f18e4 | |||
6c1abc0547 | |||
6672b6257a | |||
758bf7c39c | |||
5a16fba7d1 | |||
8cb1d16d7e | |||
aa0ebb8f47 | |||
d5048c5fe3 | |||
ec734ad787 | |||
150d82865b | |||
cd84b47fd1 | |||
e06b1e4df1 | |||
0d2e4c3ee6 | |||
1f534f7bc6 | |||
149f06c3b3 | |||
99d72cc005 | |||
46d850193d | |||
9eae441352 | |||
b0ce745a1b | |||
fe3a5dc54f |
24
README.md
24
README.md
@ -1,10 +1,10 @@
|
||||
# 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
|
||||
|
||||
@ -22,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
|
||||
|
16
bin/compile
16
bin/compile
@ -4,7 +4,7 @@ set -eo pipefail; [[ $TRACE ]] && set -x
|
||||
|
||||
NGINX_VERSION="1.17.0"
|
||||
NGINX_TARBALL="nginx-${NGINX_VERSION}.tar.gz"
|
||||
PCRE_VERSION="8.43"
|
||||
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"
|
||||
@ -53,8 +53,8 @@ if [[ ! -d "${NGINX_TARBALL%.tar.gz}" ]]; then
|
||||
fi
|
||||
|
||||
if [[ ! -d "${PCRE_TARBALL%.tar.gz}" ]]; then
|
||||
echo "-----> Download and unzip pcre ${PCRE_VERSION} via ftp"
|
||||
curl -sSL "ftp://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
|
||||
|
||||
@ -91,17 +91,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 +110,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
|
||||
|
||||
@ -145,7 +143,7 @@ if [ -f "$BUILD_DIR/app-nginx.conf.sigil" ] ; then
|
||||
|
||||
# Allow deprecated nginx.conf.erb
|
||||
elif [ -f "$BUILD_DIR/nginx.conf.erb" ] ; then
|
||||
echo "-----> DEPRECATED: 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"
|
||||
|
||||
# ...else, force default file
|
||||
@ -169,7 +167,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
|
||||
|
@ -10,6 +10,7 @@ events {
|
||||
http {
|
||||
types_hash_max_size 2048;
|
||||
include mime.types;
|
||||
charset UTF-8;
|
||||
server {
|
||||
listen {{ $.PORT }};
|
||||
server_name _;
|
||||
@ -22,7 +23,11 @@ http {
|
||||
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 }}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user