Compare commits

...

164 Commits
v3 ... master

Author SHA1 Message Date
Jose Diaz-Gonzalez ec66a23266
Merge pull request #74 from pablobm/explain-mimetypes-file
Document: users can provide their own `mime.types`
2024-01-19 20:11:38 -05:00
Pablo Brasero dfcb3706f3 Doc: users can provide their own `mime.types` 2023-12-19 08:18:45 +00:00
Jose Diaz-Gonzalez 14c274186a
Merge pull request #73 from dokku/deploy-on-ci
feat: always deploy latest on merge to master
2023-08-20 21:48:59 -04:00
Jose Diaz-Gonzalez 863aab6f36 feat: always deploy latest on merge to master 2023-08-20 21:42:53 -04:00
Jose Diaz-Gonzalez 2f08d686ff
Merge pull request #72 from dokku/josegonzalez-patch-1
feat: upgrade nginx to 1.25.2
2023-08-20 21:34:17 -04:00
Jose Diaz-Gonzalez 936c024eac
feat: upgrade nginx to 1.25.2 2023-08-20 21:14:00 -04:00
Jose Diaz-Gonzalez e833f6afad
Merge pull request #71 from dokku/josegonzalez-patch-1
feat: upgrade zlib to 1.3
2023-08-20 21:12:52 -04:00
Jose Diaz-Gonzalez 3221fc1b85
feat: upgrade zlib to 1.3 2023-08-20 20:53:40 -04:00
Jose Diaz-Gonzalez 10d257b7ad
Merge pull request #70 from dokku/josegonzalez-patch-1
feat: upgrade pcre2 to 10.42
2023-08-20 20:22:00 -04:00
Jose Diaz-Gonzalez b701653bda
feat: upgrade pcre2 to 10.42 2023-08-20 20:17:09 -04:00
Jose Diaz-Gonzalez a6dd42bddb
Merge pull request #69 from dokku/josegonzalez-patch-1
feat: upgrade sigil to 0.10.1
2023-08-20 20:16:12 -04:00
Jose Diaz-Gonzalez 130b184ec3
feat: upgrade sigil to 0.10.1 2023-08-20 20:09:55 -04:00
josegonzalez e26103764e
Merge pull request #67 from Firfi/patch-1
Add wasm mime type
2023-05-13 12:43:49 -04:00
Igor Loskutov eeb2caf824
Add wasm mime type
This is needed for support of WASM standard' https://www.w3.org/TR/wasm-web-api-1/#streaming-modules instantiateStreaming and compileStreaming, 

and causes errors like

```
WASM: wasm streaming compile failed: TypeError: Failed to execute 'compile' on 'WebAssembly': Incorrect response MIME type. Expected 'application/wasm'.
```

since plain text is returned instead.

It also doesn't seem to be easily fixable even with `nginx.conf.sigil` substitution
2023-04-16 20:33:18 +07:00
josegonzalez 61bfffb6c6
Merge pull request #66 from fc-anjos/docs/nginx_default_request
Fix NGINX_DEFAULT_REQUEST snippet
2023-01-18 15:17:37 -05:00
Felipe dos Anjos bcbf61b1f5 fix NGINX_DEFAULT_REQUEST snippet 2023-01-18 17:09:43 -03:00
Jose Diaz-Gonzalez 8345d0a22a
Merge pull request #65 from dokku/64-catch-bin-error
Ensure we check for the right sigil binary
2022-09-12 10:53:59 -04:00
Jose Diaz-Gonzalez 8560e5b5a9
fix: ensure we check for the right binary
Closes #64
2022-09-12 10:22:04 -04:00
Jose Diaz-Gonzalez aa191df661
Merge pull request #63 from dokku/upgrade-pcre
Upgrade pcre to pcre2
2022-09-10 21:09:31 -04:00
Jose Diaz-Gonzalez 7fe92f4821 chore: remove extra debug statement 2022-09-10 21:05:23 -04:00
Jose Diaz-Gonzalez 25fb7889a5 fix: build against the correct directory 2022-09-10 21:02:04 -04:00
Jose Diaz-Gonzalez 6381244e26 debug: where is the pcre2 output 2022-09-10 20:57:21 -04:00
Jose Diaz-Gonzalez 7874622b04 feat: upgrade pcre to pcre2 2022-09-10 20:54:48 -04:00
Jose Diaz-Gonzalez 0329f9e0ff
Merge pull request #62 from dokku/upgrade-nginx
Upgrade nginx to 1.23.1
2022-09-10 20:50:42 -04:00
Jose Diaz-Gonzalez 043965bc7d feat: upgrade nginx to 1.23.1 2022-09-10 20:46:19 -04:00
Jose Diaz-Gonzalez 3a1e442373
Merge pull request #61 from dokku/upgrade-sigil
Upgrade sigil to 0.9.0
2022-09-10 20:44:47 -04:00
Jose Diaz-Gonzalez 6a99e870e4 fix: copy the new binary into the correct place 2022-09-10 20:42:01 -04:00
Jose Diaz-Gonzalez ad5e831e74 chore: debug 2022-09-10 20:36:01 -04:00
Jose Diaz-Gonzalez ed31137f94 feat: upgrade sigil to 0.9.0 2022-09-10 20:31:57 -04:00
Jose Diaz-Gonzalez a68149bce7
Merge pull request #60 from dokku/upgrade-zlib
Upgrade zlib to 1.2.12
2022-09-10 20:30:21 -04:00
Jose Diaz-Gonzalez 6a592755ff feat: upgrade zlib to 1.2.12 2022-09-10 20:27:47 -04:00
Jose Diaz-Gonzalez 2b95cd179b
Merge pull request #59 from dokku/test-conf
Ensure test runs against vendored app-nginx.conf.sigil and mime.types
2022-09-10 20:23:40 -04:00
Jose Diaz-Gonzalez 9b7f098ced fix: add whitespace 2022-09-10 20:20:44 -04:00
Jose Diaz-Gonzalez 7154c020a1 fix: use GITHUB_HEAD_REF instead 2022-09-10 20:14:49 -04:00
Jose Diaz-Gonzalez a11d1ce303 refactor: use ref name instead of sha 2022-09-10 20:11:49 -04:00
Jose Diaz-Gonzalez 53b41ec631 fix: override commit being deployed 2022-09-10 19:58:50 -04:00
Jose Diaz-Gonzalez c8eef60b09 test: ensure test runs against vendored app-nginx.conf.sigil and mime.types 2022-09-10 18:56:55 -04:00
Jose Diaz-Gonzalez 09fe857895
Merge pull request #58 from dokku/correct-remote-host
fix: use correct remote host
2022-09-10 18:29:17 -04:00
Jose Diaz-Gonzalez 31dc4746e2 fix: use correct remote host 2022-09-10 18:25:08 -04:00
Jose Diaz-Gonzalez 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-Gonzalez 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-Gonzalez 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-Gonzalez c2273de014
chore: drop ssl module 2022-09-10 17:10:30 -04:00
Jose Diaz-Gonzalez 91c41476ae
feat: add ssl module 2022-09-10 16:55:10 -04:00
Jose Diaz-Gonzalez 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-Gonzalez 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 Yates 66b91f18e4
Enable http_auth 2021-12-28 20:45:30 +01:00
Jose Diaz-Gonzalez 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 Ahn 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-Gonzalez 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-Gonzalez 5a16fba7d1
fix: add missing quote 2021-11-06 20:46:18 -04:00
Jose Diaz-Gonzalez 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-Gonzalez aa0ebb8f47
Update README.md 2021-03-22 01:19:04 -04:00
Jose Diaz-Gonzalez d5048c5fe3
Merge pull request #44 from vieditcom/patch-1
Update README.md - Typo
2020-11-23 10:14:28 -05:00
Viedit com ec734ad787
Update README.md - Typo
seperate > separate
2020-11-22 13:07:12 +03:00
Jose Diaz-Gonzalez 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-Gonzalez 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-Gonzalez 0d2e4c3ee6
feat: use charset utf-8 by default
Closes #40
2020-06-11 15:33:31 -04:00
Jose Diaz-Gonzalez 1f534f7bc6
feat: enable the charset module by default 2020-06-11 15:31:47 -04:00
Jose Diaz-Gonzalez 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-Gonzalez 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-Gonzalez 9eae441352
Merge pull request #38 from vkurup/master
Update PCRE URL
2019-08-12 11:08:21 -04:00
Jose Diaz-Gonzalez 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-Gonzalez 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-Gonzalez 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 Smith 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-Gonzalez 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-Gonzalez 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-Gonzalez e31fee35bb Merge pull request #26 from nreilly/patch-1
New download location for PCRE
2017-07-16 15:32:33 -06:00
nreilly 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-Gonzalez 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 Heinemann f873fe2024 UPDATE pcre and zlib 2017-07-09 09:00:31 -06:00
antoine-duchenet 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-Gonzalez ed184f98fd Update README.md 2017-03-28 17:42:13 -06:00
Jose Diaz-Gonzalez 2535bd6ebb Merge pull request #16 from timaschew/patch-1
update docs how to set buildback
2017-01-10 11:07:12 -07:00
Anton Wilhelm 6d1ae20708 update docs how to set buildback 2017-01-10 03:52:33 +01:00
Jose Diaz-Gonzalez dded3b0717 Merge pull request #15 from shovon/patch-1
Update to instruction for manual setup
2017-01-05 12:25:51 -05:00
Sal Rahman 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
Michael Hobbs 51f642dcff Merge pull request #14 from kblcuk/master
Push zlib version to 1.2.9
2017-01-02 17:05:21 -08:00
Alexei Mikhailov 0a46959ef7 Push zlib version to 1.2.9
Also fetch it from github releases rather than site directly; those
releases won't suddenly disappear.
2017-01-02 17:22:55 +02:00
Jose Diaz-Gonzalez c8ab63c69b Merge pull request #13 from larose/nginx-conf
Use app-nginx.conf.sigil if provided
2016-12-07 11:20:37 -07:00
Mathieu Larose c2748f137e Use app-nginx.conf.sigil if provided 2016-12-06 22:14:24 -05:00
Jose Diaz-Gonzalez dd3ac20c6d Switch template to app-nginx.conf.sigil 2016-09-20 01:38:50 -06:00
Jose Diaz-Gonzalez 8848e945b9 Disable a shellcheck rule 2016-09-20 01:31:19 -06:00
Jose Diaz-Gonzalez e7684a0f2c Quote variable 2016-09-20 01:31:09 -06:00
Jose Diaz-Gonzalez fb081cabb2 Add trace mode 2016-09-20 01:31:04 -06:00
Jose Diaz-Gonzalez b69c1f3854 Suppress configure output 2016-09-20 01:20:17 -06:00
Jose Diaz-Gonzalez 9c7cde74ad Cleanup bin/release 2016-09-20 01:18:03 -06:00
Jose Diaz-Gonzalez c4c93aebe0 Suppress output on success 2016-09-20 01:12:00 -06:00
Jose Diaz-Gonzalez 8348cbde99 Fix casing on notices 2016-09-20 01:06:26 -06:00
Jose Diaz-Gonzalez 1b0c929144 Simplify detection 2016-09-20 01:00:53 -06:00
Jose Diaz-Gonzalez ed2e482ed9 Run shellcheck against repository 2016-09-20 01:00:40 -06:00
Jose Diaz-Gonzalez aa23156a8e Fix if statement 2016-09-20 00:49:15 -06:00
Jose Diaz-Gonzalez c4ad67f9de Fix curl calls 2016-09-20 00:44:27 -06:00
Jose Diaz-Gonzalez 7251f38a51 Silent curl calls 2016-09-20 00:39:20 -06:00
RedPumpkin 8797219a4b Update compile 2016-09-20 00:22:36 -06:00
RedPumpkin c947e409e8 Update NGINX and PCRE Version 2016-09-20 00:22:35 -06:00
Jose Diaz-Gonzalez 28d1a580cf Move to supporting sigil templates by default 2016-09-20 00:18:28 -06:00
Jose Diaz-Gonzalez b9842399a3 Install sigil from github 2016-09-20 00:13:15 -06:00
Jose Diaz-Gonzalez bb20210245 Remove bad logic regarding sigil template
The copied sigil template will be the dokku one, not an nginx-app specific version
2016-09-20 00:08:08 -06:00
Jose Diaz-Gonzalez d3a90d7520 Merge pull request #11 from dennmart/master
Copy nginx.conf.sigil
2016-09-19 23:22:20 -06:00
Jose Diaz-Gonzalez fabd871741 Merge branch 'riscie-master' 2016-09-19 23:15:34 -06:00
Jose Diaz-Gonzalez 6430fa286b Merge branch 'master' of https://github.com/riscie/buildpack-nginx into riscie-master 2016-09-19 23:15:28 -06:00
Jose Diaz-Gonzalez b4bd0c0b1f Merge pull request #9 from leonardowf/master
Add try_files support
2016-09-19 23:12:57 -06:00
Jose Diaz-Gonzalez 06888793b1 Merge pull request #8 from alexleclair/master
Copy app.json from www/ into $BUILD_DIR for deployment task support
2016-09-19 23:11:40 -06:00
Jose Diaz-Gonzalez 7e7e9be442 Merge pull request #7 from FireCoding/master
add .gitignore
2016-09-19 23:10:56 -06:00
Jose Diaz-Gonzalez fd73b73748 Merge pull request #6 from iliyat/master
Merge forks
2016-09-19 23:08:55 -06:00
Jose Diaz-Gonzalez e1efa9a3a2 Merge pull request #5 from florianheinemann/master
Merge upstream florianheinemann/buildpack-nginx
2016-09-19 23:04:18 -06:00
Leonardo Wistuba de França f1d835dd90 Update nginx.conf.erb 2016-09-11 12:05:14 -03:00
Alexandre Leclair ca7b083aad Now copying app.json from www/ into $BUILD_DIR, thus allowing pre/post deploy scripts to execute 2016-08-24 14:20:29 -04:00
David b7d61bbea4 add .gitignore 2016-07-27 20:48:14 -04:00
Jose Diaz-Gonzalez d4f83febf9 Update README.md 2016-06-30 14:27:22 -04:00
Matthias Langhard bb6e9d398d Forwards requests to index.html after no file or folder was found
Useful for SPA's like AngularJS where the SPA's router takes care of the routing.
2016-06-28 13:45:23 +02:00
Jose Diaz-Gonzalez 513791b391 Fix link in readme 2016-05-10 17:20:47 -04:00
Iliya Tovstyonok 2e9a75e96b Merge pull request #3 from florianheinemann/master
update fork
2016-05-08 00:59:46 +03:00
Dennis Martinez 9c43925fac Forgot to copy over nginx.conf.sigil to the build directory 2016-04-27 15:36:18 +09:00
Dennis Martinez 640f6d396a Syntax error for Bash 2016-04-27 15:34:27 +09:00
Dennis Martinez 3a20517687 Check for existence of nginx.conf.sigil for Dokku 0.5.0+ 2016-04-27 15:31:46 +09:00
Florian Heinemann afa0a94343 Merge pull request #13 from milanholy83/master
nginx 1.8.1
2016-02-09 11:43:03 +01:00
milanholy83 ce6895ef38 nginx 1.8.1 2016-02-09 11:28:01 +01:00
Iliya Tovstyonok 6b7fd744ce Merge pull request #2 from florianheinemann/master
Last commits
2016-01-13 10:58:17 +03:00
Florian Heinemann 9d273c7607 Merge pull request #11 from kmattimo/master
restored ability to use custom mime.types
2015-12-24 13:17:24 +01:00
Kyle Mattimore 7d773187bb restored ability to use custom mime.types 2015-12-23 14:14:33 -05:00
Florian Heinemann 847b25b51d Merge pull request #10 from jonbjornn/master
Update PCRE version to fix broken compile step
2015-12-04 23:00:15 +01:00
Jon 12fe84ae6b Update PCRE version to fix broken compile step 2015-12-04 09:34:49 -08:00
Michael Hobbs d1cccfc747 Merge pull request #3 from dokku/mh-nginx-root
change ROOT env var and doc it
2015-11-25 10:43:18 -08:00
Michael Hobbs ccbb3d7ed5 change ROOT env var and doc it 2015-11-25 10:43:01 -08:00
Michael Hobbs 61c95d52d8 Merge pull request #2 from florianheinemann/master
florianheinemann updates
2015-11-25 10:22:57 -08:00
Florian Heinemann 805e24be7f Merge pull request #9 from portokallidis/patch-1
Add documentation for nginx custom configuration
2015-10-30 13:15:32 +01:00
Nick Portokallidis 624cd06847 Add documentation for nginx custom configuration 2015-10-30 13:56:00 +02:00
Florian Heinemann 7a023ab687 Merge pull request #8 from btkostner/master
added ROOT variable
2015-10-10 22:45:21 +02:00
Blake Kostner 69e450813e added ROOT param 2015-10-05 17:09:58 -07:00
Florian Heinemann b1370b9c56 Merge pull request #7 from Crispy1975/hotfix/path-test
Hotfix/path test
2015-09-11 11:50:51 +08:00
Paul C caa17b7718 Testing paths from other pack. 2015-09-10 18:57:55 +01:00
Florian Heinemann 9da922ee28 Merge pull request #4 from Downchuck/master
Use full path of nginx executable
2015-07-27 14:39:23 -04:00
Iliya Tovstyonok 770f4feb42 Merge pull request #1 from florianheinemann/master
Last commits
2015-07-22 02:23:24 +03:00
Florian Heinemann 56bd6c514d Merge pull request #6 from Crispy1975/hotfix/fix-override
Fixing nginx user override.
2015-07-04 21:12:37 -04:00
Paul Caselton 23e4a8ab42 Removing rm line 2015-07-04 23:51:02 +01:00
Paul Caselton ebbc9098d9 Fixing nginx user override. 2015-07-04 23:04:54 +01:00
Florian Heinemann 1955dcaa72 Merge pull request #5 from Crispy1975/feature/inject-conf
Check for user defined nginx config
2015-07-03 23:10:43 -04:00
Paul Caselton 29bc30b8d3 Check for user defined nginx config 2015-07-03 22:23:06 +01:00
Charles Pritchard 969446ca04 Use full path of nginx executable 2015-03-27 16:34:46 -07:00
16 changed files with 371 additions and 91 deletions

26
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,26 @@
---
name: 'review-app'
# yamllint disable-line rule:truthy
on:
push:
branches:
- master
- main
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:
git_remote_url: 'ssh://dokku@dokku.com/nginx-buildpack'
# specify `--force` as a flag for git pushes
git_push_flags: '--force'
ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }}

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.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
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
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.idea

1
.static Normal file
View File

@ -0,0 +1 @@
.static

20
Makefile Normal file
View 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

View File

@ -1,17 +1,57 @@
# NGINX Buildpack for Dokku - Hosting static pages
This buildpack has been successfully run on Digital Ocean instances of Ubuntu 14.04 (Status: Jan 2015). It might also work with different configurations.
# heroku-buildpack-nginx
## Purpose
`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.
This is the official dokku buildpack for static websites, powered by nginx.
## 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.
### Dokku
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_DEFAULT_REQUEST=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.
### Custom MIME types
Files will be served with a `Content-Type` according to a list of supported MIME types at [`conf/mime.types`](https://github.com/dokku/heroku-buildpack-nginx/blob/master/conf/mime.types). If you need to serve files of a MIME type not included in the list, you can provide your own `mime.types` file in the root.
## 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/)

28
bin/ci-pre-deploy Normal file
View 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

View File

@ -1,85 +1,111 @@
#!/usr/bin/env bash
# bin/compile <build-dir> <cache-dir>
set -eo pipefail
[[ $TRACE ]] && set -x
set -e
set -o pipefail
# Nginx 1.6.2
NGINX_VERSION="1.6.2"
NGINX_VERSION="1.25.2"
NGINX_TARBALL="nginx-${NGINX_VERSION}.tar.gz"
PCRE_VERSION="8.38"
PCRE_TARBALL="pcre-${PCRE_VERSION}.tar.gz"
ZLIB_VERSION="1.2.8"
PCRE_VERSION="10.42"
PCRE_TARBALL="pcre2-${PCRE_VERSION}.tar.gz"
SIGIL_VERSION="0.10.1"
SIGIL_TARBALL="gliderlabs-sigil_${SIGIL_VERSION}_linux_amd64.tgz"
ZLIB_VERSION="1.3"
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
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
mkdir -p "$BUILD_DIR" "$CACHE_DIR"
if [[ ! -e "$BUILD_DIR/www" ]]; then
echo "-----> copy static files to www"
rm -rf $CACHE_DIR/www
mkdir -p $CACHE_DIR/www
mv $BUILD_DIR/* $CACHE_DIR/www
mkdir -p $BUILD_DIR/www
mv $CACHE_DIR/www/* $BUILD_DIR/www
[[ -f "$BUILD_DIR/www/CHECKS" ]] && mv $BUILD_DIR/www/CHECKS $BUILD_DIR
rm -rf $CACHE_DIR/www
if [[ ! -e "${BUILD_DIR}/www" ]]; then
echo "-----> Copy static files to www"
rm -rf "${CACHE_DIR}/www"
mkdir -p "${CACHE_DIR}/www"
# shellcheck disable=SC2086
mv $BUILD_DIR/* "${CACHE_DIR}/www"
mkdir -p "${BUILD_DIR}/www"
# shellcheck disable=SC2086
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
cd $CACHE_DIR
cd "$CACHE_DIR"
if [[ ! -d "${NGINX_TARBALL%.tar.gz}" ]]; then
echo "-----> download and unzip nginx"
curl "http://nginx.org/download/${NGINX_TARBALL}" -o "${NGINX_TARBALL}"
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 "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://github.com/PCRE2Project/pcre2/releases/download/pcre2-${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"
curl "http://zlib.net/${ZLIB_TARBALL}" -o "${ZLIB_TARBALL}"
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 "gliderlabs-sigil-amd64" ]]; 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"
if [[ ! -f "gliderlabs-sigil-amd64" ]]; then
echo " ! Missing gliderlabs-sigil-amd64 binary"
exit 1
fi
cp -r gliderlabs-sigil-amd64 "$BUILD_DIR/sigil/sigil"
cd "nginx-${NGINX_VERSION}"
if [[ ! -f "${CACHE_DIR}/bin/nginx" ]]; then
echo "-----> compile static nginx"
mkdir $BUILD_DIR/nginx
./configure \
echo "-----> Compiling static nginx binary"
mkdir "$BUILD_DIR/nginx"
suppress ./configure \
--with-cpu-opt=generic \
--prefix=$BUILD_DIR/nginx \
--with-pcre=../pcre-${PCRE_VERSION} \
--prefix="$BUILD_DIR/nginx" \
--with-pcre=../pcre2-${PCRE_VERSION} \
--sbin-path=. \
--pid-path=./nginx.pid \
--conf-path=./nginx.conf \
--with-ld-opt="-static" \
--with-http_spdy_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-file-aio \
--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 \
@ -91,46 +117,67 @@ 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
make && make install
suppress make && suppress make install
rm -rf $CACHE_DIR/bin && mkdir -p $CACHE_DIR/bin/
cp -r $BUILD_DIR/nginx/* $CACHE_DIR/bin/
rm -rf "${CACHE_DIR:?}/bin" && mkdir -p "$CACHE_DIR/bin/"
# shellcheck disable=SC2086
cp -r $BUILD_DIR/nginx/* "$CACHE_DIR/bin/"
else
echo "-----> reuse nginx from cache"
mkdir -p $BUILD_DIR/nginx
cp -r $CACHE_DIR/bin/* $BUILD_DIR/nginx/
echo "-----> Reusing nginx binary from cache"
mkdir -p "$BUILD_DIR/nginx"
# shellcheck disable=SC2086
cp -r $CACHE_DIR/bin/* "$BUILD_DIR/nginx/"
fi
# Update the PATH
mkdir -p $BUILD_DIR/.profile.d
cat > $BUILD_DIR/.profile.d/nginx.sh <<"EOF"
mkdir -p "$BUILD_DIR/.profile.d"
cat >"$BUILD_DIR/.profile.d/nginx.sh" <<"EOF"
export PATH="$PATH:$HOME/nginx"
EOF
cd $CUR_DIR
cd "$CUR_DIR"
# build nginx config unless overridden by user
#if [ ! -f $BUILD_DIR/nginx/nginx.conf ] ; then
echo "-----> using default nginx.conf.erb"
cp conf/nginx.conf.erb $BUILD_DIR/nginx/nginx.conf.erb
#fi
# 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"
# Allow deprecated 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
else
echo "-----> Using default app-nginx.conf.sigil"
cp conf/app-nginx.conf.sigil "$BUILD_DIR/nginx/app-nginx.conf.sigil"
fi
# build mime.types unless overridden by user
#if [ ! -f $BUILD_DIR/mime.types ] ; then
echo "-----> using default mime.types"
cp conf/mime.types $BUILD_DIR/nginx/mime.types
#fi
if [ -f "$BUILD_DIR/mime.types" ]; then
echo "-----> Using user provided mime.types"
cp "$BUILD_DIR/mime.types" "$BUILD_DIR/nginx/mime.types"
else
echo "-----> Using default mime.types"
cp conf/mime.types "$BUILD_DIR/nginx/mime.types"
fi
# build a startup script
cat <<EOF >"$BUILD_DIR/start_nginx"
#!/usr/bin/env bash
rm -f /app/nginx/nginx.conf
erb /app/nginx/nginx.conf.erb > /app/nginx/nginx.conf
exec nginx -p /app/nginx -c /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
EOF
chmod +x "$BUILD_DIR/start_nginx"

View File

@ -1,9 +1,11 @@
#!/usr/bin/env bash
set -e
# bin/detect <build-dir> <cache-dir>
set -eo pipefail
[[ $TRACE ]] && set -x
if [[ -f $1/.static ]]; then
echo ".static"
exit 0
else
# Exit early if app is clearly not an nginx app
if [[ ! -f "$1/.static" ]]; then
exit 1
fi
echo ".static"

View File

@ -1,10 +1,11 @@
#!/usr/bin/env bash
# bin/release <build-dir>
set -eo pipefail
[[ $TRACE ]] && set -x
cat <<EOF
---
addons:
addons: []
default_process_types:
web: /app/start_nginx
EOF

33
conf/app-nginx.conf.sigil Normal file
View 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 }}
}
}
}

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;
@ -38,6 +39,7 @@ types {
application/vnd.wap.wmlc wmlc;
application/vnd.google-earth.kml+xml kml;
application/vnd.google-earth.kmz kmz;
application/wasm wasm;
application/x-7z-compressed 7z;
application/x-cocoa cco;
application/x-java-archive-diff jardiff;

View File

@ -1,19 +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 _;
root /app/www;
index index.html;
}
}

45
site/index.html Normal file
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
site/robots.txt Normal file
View File

@ -0,0 +1,2 @@
User-agent: *
Disallow: /