mirror of
https://github.com/dokku/buildpack-nginx.git
synced 2025-06-26 18:40:45 +00:00
Compare commits
22 Commits
Author | SHA1 | Date | |
---|---|---|---|
91c41476ae | |||
90c8bd9365 | |||
89196adbf1 | |||
dbbbcc2c3e | |||
daa9549fb7 | |||
66b91f18e4 | |||
6c1abc0547 | |||
6672b6257a | |||
758bf7c39c | |||
5a16fba7d1 | |||
8cb1d16d7e | |||
aa0ebb8f47 | |||
d5048c5fe3 | |||
ec734ad787 | |||
150d82865b | |||
cd84b47fd1 | |||
e06b1e4df1 | |||
0d2e4c3ee6 | |||
1f534f7bc6 | |||
149f06c3b3 | |||
99d72cc005 | |||
46d850193d |
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.
|
This is the official dokku buildpack for static websites, powered by nginx.
|
||||||
|
|
||||||
## Usage
|
## 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
|
### Dokku
|
||||||
|
|
||||||
@ -22,8 +22,28 @@ heroku buildpacks:set https://github.com/dokku/buildpack-nginx.git
|
|||||||
|
|
||||||
## Configuration
|
## 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.
|
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.
|
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
|
||||||
|
17
bin/compile
17
bin/compile
@ -4,7 +4,7 @@ set -eo pipefail; [[ $TRACE ]] && set -x
|
|||||||
|
|
||||||
NGINX_VERSION="1.17.0"
|
NGINX_VERSION="1.17.0"
|
||||||
NGINX_TARBALL="nginx-${NGINX_VERSION}.tar.gz"
|
NGINX_TARBALL="nginx-${NGINX_VERSION}.tar.gz"
|
||||||
PCRE_VERSION="8.43"
|
PCRE_VERSION="8.45"
|
||||||
PCRE_TARBALL="pcre-${PCRE_VERSION}.tar.gz"
|
PCRE_TARBALL="pcre-${PCRE_VERSION}.tar.gz"
|
||||||
SIGIL_VERSION="0.4.0"
|
SIGIL_VERSION="0.4.0"
|
||||||
SIGIL_TARBALL="sigil_${SIGIL_VERSION}_Linux_x86_64.tgz"
|
SIGIL_TARBALL="sigil_${SIGIL_VERSION}_Linux_x86_64.tgz"
|
||||||
@ -53,8 +53,8 @@ if [[ ! -d "${NGINX_TARBALL%.tar.gz}" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ! -d "${PCRE_TARBALL%.tar.gz}" ]]; then
|
if [[ ! -d "${PCRE_TARBALL%.tar.gz}" ]]; then
|
||||||
echo "-----> Download and unzip pcre ${PCRE_VERSION} via ftp"
|
echo "-----> Download and unzip pcre ${PCRE_VERSION} via http"
|
||||||
curl -sSL "https://ftp.pcre.org/pub/pcre/${PCRE_TARBALL}" -o "${PCRE_TARBALL}"
|
curl -sSL "https://downloads.sourceforge.net/project/pcre/pcre/${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
|
||||||
|
|
||||||
@ -87,21 +87,19 @@ if [[ ! -f "${CACHE_DIR}/bin/nginx" ]]; then
|
|||||||
--with-ld-opt="-static" \
|
--with-ld-opt="-static" \
|
||||||
--with-http_stub_status_module \
|
--with-http_stub_status_module \
|
||||||
--with-http_gzip_static_module \
|
--with-http_gzip_static_module \
|
||||||
|
--with-http_ssl_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 \
|
||||||
@ -113,7 +111,8 @@ 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
|
||||||
|
|
||||||
@ -145,7 +144,7 @@ if [ -f "$BUILD_DIR/app-nginx.conf.sigil" ] ; then
|
|||||||
|
|
||||||
# Allow deprecated nginx.conf.erb
|
# Allow deprecated nginx.conf.erb
|
||||||
elif [ -f "$BUILD_DIR/nginx.conf.erb" ] ; then
|
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"
|
cp "$BUILD_DIR/nginx.conf.erb" "$BUILD_DIR/nginx/nginx.conf.erb"
|
||||||
|
|
||||||
# ...else, force default file
|
# ...else, force default file
|
||||||
@ -169,7 +168,7 @@ 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
|
||||||
if [[ -f /app/nginx/app-nginx.conf.sigil ]]; then
|
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
|
else
|
||||||
erb /app/nginx/nginx.conf.erb > /app/nginx/nginx.conf
|
erb /app/nginx/nginx.conf.erb > /app/nginx/nginx.conf
|
||||||
fi
|
fi
|
||||||
|
@ -10,6 +10,7 @@ events {
|
|||||||
http {
|
http {
|
||||||
types_hash_max_size 2048;
|
types_hash_max_size 2048;
|
||||||
include mime.types;
|
include mime.types;
|
||||||
|
charset UTF-8;
|
||||||
server {
|
server {
|
||||||
listen {{ $.PORT }};
|
listen {{ $.PORT }};
|
||||||
server_name _;
|
server_name _;
|
||||||
@ -22,7 +23,11 @@ http {
|
|||||||
port_in_redirect off;
|
port_in_redirect off;
|
||||||
|
|
||||||
location / {
|
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