{"id":19216918,"url":"https://github.com/devilbox/docker-nginx-stable","last_synced_at":"2026-03-02T17:33:39.338Z","repository":{"id":11758500,"uuid":"70465939","full_name":"devilbox/docker-nginx-stable","owner":"devilbox","description":"Devilbox's Nginx stable (based on official Nginx Docker) [multi-arch]","archived":false,"fork":false,"pushed_at":"2023-09-05T11:31:00.000Z","size":6863,"stargazers_count":18,"open_issues_count":1,"forks_count":15,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-12T23:44:43.415Z","etag":null,"topics":["devilbox","docker","docker-container","docker-image","docker-registry","dockerfile","nginx","nginx-docker"],"latest_commit_sha":null,"homepage":"http://devilbox.org/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devilbox.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["cytopia"],"patreon":"devilbox"}},"created_at":"2016-10-10T08:09:05.000Z","updated_at":"2024-01-18T18:27:04.000Z","dependencies_parsed_at":"2025-04-20T19:46:18.265Z","dependency_job_id":null,"html_url":"https://github.com/devilbox/docker-nginx-stable","commit_stats":null,"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"purl":"pkg:github/devilbox/docker-nginx-stable","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devilbox%2Fdocker-nginx-stable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devilbox%2Fdocker-nginx-stable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devilbox%2Fdocker-nginx-stable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devilbox%2Fdocker-nginx-stable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devilbox","download_url":"https://codeload.github.com/devilbox/docker-nginx-stable/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devilbox%2Fdocker-nginx-stable/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30011965,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T17:00:27.440Z","status":"ssl_error","status_checked_at":"2026-03-02T17:00:03.402Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devilbox","docker","docker-container","docker-image","docker-registry","dockerfile","nginx","nginx-docker"],"created_at":"2024-11-09T14:19:23.232Z","updated_at":"2026-03-02T17:33:39.298Z","avatar_url":"https://github.com/devilbox.png","language":"Shell","readme":"# Nginx stable\n\n[![release](https://img.shields.io/github/release/devilbox/docker-nginx-stable.svg)](https://github.com/devilbox/docker-nginx-stable/releases)\n[![Github](https://img.shields.io/badge/github-docker--nginx--stable-red.svg)](https://github.com/devilbox/docker-nginx-stable)\n[![lint](https://github.com/devilbox/docker-nginx-stable/workflows/lint/badge.svg)](https://github.com/devilbox/docker-nginx-stable/actions?query=workflow%3Alint)\n[![build](https://github.com/devilbox/docker-nginx-stable/workflows/build/badge.svg)](https://github.com/devilbox/docker-nginx-stable/actions?query=workflow%3Abuild)\n[![nightly](https://github.com/devilbox/docker-nginx-stable/workflows/nightly/badge.svg)](https://github.com/devilbox/docker-nginx-stable/actions?query=workflow%3Anightly)\n[![License](https://img.shields.io/badge/license-MIT-%233DA639.svg)](https://opensource.org/licenses/MIT)\n\n[![Discord](https://img.shields.io/discord/1051541389256704091?color=8c9eff\u0026label=Discord\u0026logo=discord)](https://discord.gg/2wP3V6kBj4)\n[![Discourse](https://img.shields.io/discourse/https/devilbox.discourse.group/status.svg?colorB=%234CB697\u0026label=Discourse\u0026logo=discourse)](https://devilbox.discourse.group)\n\n\n**Available Architectures:**  `amd64`, `arm64`, `386`, `arm/v7`, `arm/v6`\n\n[![](https://img.shields.io/docker/pulls/devilbox/nginx-stable.svg)](https://hub.docker.com/r/devilbox/nginx-stable)\n\nThis image is based on the official **[Nginx](https://hub.docker.com/_/nginx)** Docker image and extends it with the ability to have **virtual hosts created automatically**, as well as **adding SSL certificates** when creating new directories. For that to work, it integrates two tools that will take care about the whole process: **[watcherd](https://github.com/devilbox/watcherd)** and **[vhost-gen](https://github.com/devilbox/vhost-gen)**.\n\nFrom a users perspective, you mount your local project directory into the container under `/shared/httpd`. Any directory then created in your local project directory wil spawn a new virtual host by the same name. Each virtual host optionally supports a generic or custom backend configuration: **static files**, **PHP-FPM**, **reverse proxy** (with or without **websocket** support)..\n\n**HTTP/2 is enabled by default for all SSL connections.**\n\nFor convenience the entrypoint script during `docker run` provides a pretty decent **validation and documentation** about wrong user input and suggests steps to fix it.\n\n| \u003cimg style=\"height: 180px;\" height=\"180\" src=\"doc/img/httpd-backend-invalid-type.png\" /\u003e | \u003cimg style=\"height: 180px;\" height=\"180\" src=\"doc/img/httpd-backend-unsupported.png\" /\u003e | \u003cimg style=\"height: 180px;\" height=\"180\" src=\"doc/img/httpd-alias-validation.png\" /\u003e | \u003cimg style=\"height: 180px;\" height=\"180\" src=\"doc/img/httpd-valid.png\" /\u003e |\n|:----------------------:|:------------------:|:-------------:|:--------:|\n| Invalid backend string | Backend Suggestion | Invalid Alias | Verified |\n\n\n\u003e ##### 🐱 GitHub: [devilbox/docker-nginx-stable](https://github.com/devilbox/docker-nginx-stable)\n\n| Web Server Project  | Reference Implementation |\n|:-------------------:|:------------------------:|\n| \u003ca title=\"Docker Nginx\" href=\"https://github.com/devilbox/docker-nginx-stable\" \u003e\u003cimg height=\"82px\" src=\"https://raw.githubusercontent.com/devilbox/artwork/master/submissions_banner/cytopia/05/png/banner_256_trans.png\" /\u003e\u003c/a\u003e | \u003ca title=\"Devilbox\" href=\"https://github.com/cytopia/devilbox\" \u003e\u003cimg height=\"82px\" src=\"https://raw.githubusercontent.com/devilbox/artwork/master/submissions_banner/cytopia/01/png/banner_256_trans.png\" /\u003e\u003c/a\u003e |\n| Streamlined Webserver images | The [Devilbox](https://github.com/cytopia/devilbox) |\n\n**[Apache 2.2](https://github.com/devilbox/docker-apache-2.2) | [Apache 2.4](https://github.com/devilbox/docker-apache-2.4) | Nginx stable | [Nginx mainline](https://github.com/devilbox/docker-nginx-mainline)**\n\n----\n\n\n## 🐋 Available Docker tags\n\n[![](https://img.shields.io/docker/pulls/devilbox/nginx-stable.svg)](https://hub.docker.com/r/devilbox/nginx-stable)\n\n[`latest`][tag_latest] [`debian`][tag_debian] [`alpine`][tag_alpine]\n```bash\ndocker pull devilbox/nginx-stable\n```\n\n[tag_latest]: https://github.com/devilbox/docker-nginx-stable/blob/master/Dockerfiles/Dockerfile.latest\n[tag_debian]: https://github.com/devilbox/docker-nginx-stable/blob/master/Dockerfiles/Dockerfile.debian\n[tag_alpine]: https://github.com/devilbox/docker-nginx-stable/blob/master/Dockerfiles/Dockerfile.alpine\n\n\n#### Rolling releases\n\nThe following Docker image tags are rolling releases and are built and updated every night.\n\n[![nightly](https://github.com/devilbox/docker-nginx-stable/workflows/nightly/badge.svg)](https://github.com/devilbox/docker-nginx-stable/actions?query=workflow%3Anightly)\n\n| Docker Tag                       | Git Ref      |  Available Architectures                      |\n|----------------------------------|--------------|-----------------------------------------------|\n| **[`latest`][tag_latest]**       | master       |  `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6` |\n| [`debian`][tag_debian]           | master       |  `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6` |\n| [`alpine`][tag_alpine]           | master       |  `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6` |\n\n\n#### Point in time releases\n\nThe following Docker image tags are built once and can be used for reproducible builds. Its version never changes so you will have to update tags in your pipelines from time to time in order to stay up-to-date.\n\n[![build](https://github.com/devilbox/docker-nginx-stable/workflows/build/badge.svg)](https://github.com/devilbox/docker-nginx-stable/actions?query=workflow%3Abuild)\n\n| Docker Tag                       | Git Ref      |  Available Architectures                      |\n|----------------------------------|--------------|-----------------------------------------------|\n| **[`\u003ctag\u003e`][tag_latest]**        | git: `\u003ctag\u003e` |  `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6` |\n| [`\u003ctag\u003e-debian`][tag_debian]     | git: `\u003ctag\u003e` |  `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6` |\n| [`\u003ctag\u003e-alpine`][tag_alpine]     | git: `\u003ctag\u003e` |  `amd64`, `i386`, `arm64`, `arm/v7`, `arm/v6` |\n\n\u003e 🛈 Where `\u003ctag\u003e` refers to the chosen git tag from this repository.\u003cbr/\u003e\n\u003e ⚠ **Warning:** The latest available git tag is also build every night and considered a rolling tag.\n\n\n\n## ✰ Features\n\nThis repository uses official httpd Docker images and adds a lot of features, logic and autmomation op top. This allows you to feature-toggle certain functionality simply by setting environment variables.\n\nBelow is a brief overview about most outstanding features, but I would still advice you to read up on available [environment variables](#-environment-variables), as well as the [architecture](#-architecture) to get the whole picture.\n\n\n\u003e 🛈 For details see **[Documentation: Features](doc/features.md)**\n\n#### Automated mass virtual hosts\n* Virtual hosts are created automatically, simply by creating a new project directory (inside or outside of the container). This allows you to quickly create new projects and work on them in your IDE without the hassle of configuring the web server.\n\n#### Automated PHP-FPM setup\n* PHP is not included in the provided images, but you can enable a remote backend and link it to a PHP-FPM image. This allows you to easily switch PHP versions and choose one which is currently required.\n\n#### Automated Reverse Proxy setup\n* In reverse proxy mode, you can choose any http or https backend of your likings. This way you can proxy NodeJS, Python, etc. and use the webserver to add SSL in front. It distinguishes between HTTP backends (`http://`, `https://`) and Websocket backends (`ws://`, `wss://`) automatically and configures accordingly.\n\n#### Automated SSL certificate generation\n* SSL certificates are generated automatically for each virtual host if you choose to enable it\n\n#### Trusted HTTPS in all vhosts\n* Virtual host SSL certificates are signed by an internal Certificate Authority (or one you provide to the image). That makes it possible to set the CA to trusted and all generated vhosts will automatically have trusted SSL.\n\n#### Customization per virtual host\n* Each virtual host can individually be fully customized via [`vhost-gen`](https://github.com/devilbox/vhost-gen) templates.\n\n#### Local file system permission sync\n* File system permission/ownership of files/dirs inside the running container can be synced with the permission on your host system. This is accomplished by specifying a user- and group-id to the `docker run` command.\n\n#### Tested with common Frameworks\n* Wordpress, Drupal, Laravel, CakePHP, PhalconPHP, Magento, Shopware, Typo3, Yii, Zend and many others.\n\n\n\n## ∑ Environment Variables\n\nThe provided Docker images add a lot of injectables in order to customize it to your needs. See the table below for a brief overview.\n\n\u003e 🛈 For details see **[Documentation: Environment variables](doc/environment-variables.md)**\n\u003e\n\u003e If you don't feel like reading the documentation, simply try out your `docker run` command and add\n\u003e any environment variables specified below. The validation will tell you what you might have done wrong,\n\u003e how to fix it and what the meaning is.\n\n\u003ctable\u003e\n \u003ctr valign=\"top\" style=\"vertical-align:top\"\u003e\n  \u003ctd\u003e\n   \u003cstrong\u003eVerbosity\u003c/strong\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-debug_entrypoint\" \u003eDEBUG_ENTRYPOINT\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-debug_runtime\" \u003eDEBUG_RUNTIME\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n  \u003c/td\u003e\n  \u003ctd\u003e\n   \u003cstrong\u003eSystem\u003c/strong\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-new_uid\" \u003eNEW_UID\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-new_gid\" \u003eNEW_GID\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-timezone\" \u003eTIMEZONE\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n  \u003c/td\u003e\n  \u003ctd\u003e\n   \u003cstrong\u003eNginx\u003c/strong\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-worker_connections\" \u003eWORKER_CONNECTIONS\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-worker_processes\" \u003eWORKER_PROCESSES\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n  \u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr valign=\"top\" style=\"vertical-align:top\"\u003e\n  \u003ctd\u003e\n   \u003cstrong\u003eMain Vhost\u003c/strong\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-main_vhost_enable\" \u003eMAIN_VHOST_ENABLE\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-main_vhost_aliases_allow\" \u003eMAIN_VHOST_ALIASES_ALLOW\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-main_vhost_aliases_deny\" \u003eMAIN_VHOST_ALIASES_DENY\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-main_vhost_backend\" \u003eMAIN_VHOST_BACKEND\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-main_vhost_backend_timeout\" \u003eMAIN_VHOST_BACKEND_TIMEOUT\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-main_vhost_docroot_dir\" \u003eMAIN_VHOST_DOCROOT_DIR\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-main_vhost_template_dir\" \u003eMAIN_VHOST_TEMPLATE_DIR\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-main_vhost_ssl_type\" \u003eMAIN_VHOST_SSL_TYPE\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-main_vhost_ssl_cn\" \u003eMAIN_VHOST_SSL_CN\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-main_vhost_status_enable\" \u003eMAIN_VHOST_STATUS_ENABLE\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-main_vhost_status_alias\" \u003eMAIN_VHOST_STATUS_ALIAS\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n  \u003c/td\u003e\n  \u003ctd\u003e\n   \u003cstrong\u003eMass Vhost\u003c/strong\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-mass_vhost_enable\" \u003eMASS_VHOST_ENABLE\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-mass_vhost_aliases_allow\" \u003eMASS_VHOST_ALIASES_ALLOW\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-mass_vhost_aliases_deny\" \u003eMASS_VHOST_ALIASES_DENY\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-mass_vhost_backend\" \u003eMASS_VHOST_BACKEND\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-mass_vhost_backend_timeout\" \u003eMASS_VHOST_BACKEND_TIMEOUT\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-mass_vhost_docroot_dir\" \u003eMASS_VHOST_DOCROOT_DIR\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-mass_vhost_template_dir\" \u003eMASS_VHOST_TEMPLATE_DIR\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-mass_vhost_ssl_type\" \u003eMASS_VHOST_SSL_TYPE\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-mass_vhost_backend_rewrite\" \u003eMASS_VHOST_BACKEND_REWRITE\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-mass_vhost_tld_suffix\" \u003eMASS_VHOST_TLD_SUFFIX\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n  \u003c/td\u003e\n  \u003ctd\u003e\n   \u003cstrong\u003eAll Vhosts\u003c/strong\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-docker_logs\" \u003eDOCKER_LOGS\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e\u003ca href=\"doc/environment-variables.md#-http2_enable\" \u003eHTTP2_ENABLE\u003c/a\u003e\u003c/code\u003e\u003cbr/\u003e\n  \u003c/td\u003e\n \u003c/tr\u003e\n\u003c/table\u003e\n\n\n\n## 📂 Volumes\n\nThe provided Docker images offer the following internal paths to be mounted to your local file system.\n\n\u003e 🛈 For details see **[Documentation: Volumes](doc/volumes.md)**\n\n\u003ctable\u003e\n \u003ctr\u003e\n  \u003cth\u003eData dir\u003c/th\u003e\n  \u003cth\u003eConfig dir\u003c/th\u003e\n \u003c/tr\u003e\n \u003ctr valign=\"top\" style=\"vertical-align:top\"\u003e\n  \u003ctd\u003e\n   \u003ccode\u003e/var/www/default/\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e/shared/httpd/\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e/ca/\u003c/code\u003e\u003cbr/\u003e\n  \u003c/td\u003e\n  \u003ctd\u003e\n   \u003ccode\u003e/etc/httpd-custom.d/\u003c/code\u003e\u003cbr/\u003e\n   \u003ccode\u003e/etc/vhost-gen.d/\u003c/code\u003e\u003cbr/\u003e\n  \u003c/td\u003e\n  \u003c/td\u003e\n \u003c/tr\u003e\n\u003c/table\u003e\n\n\n\n## 🖧 Exposed Ports\n\nWhen you plan on using `443` you must enable SSL via environment variables, otherwise nothing will be listening on that port.\n\n| Docker | Description |\n|--------|-------------|\n| 80     | HTTP listening Port |\n| 443    | HTTPS listening Port |\n\n\n\n## 💡 Examples\n\nThe documentation provides many copy/paste examples about common use-cases including dummy projects.\n\nThe given examples distinguish between two different kinds of setup: The default vhost, which only allows to serve a single project and the mass vhost setup, which allows unlimited vhosts that are created automtically. Both types offer the same set of features and are configured in a similar way, so If you find an example in one kind it is easily applyable to the other kind as well.\n\n\u003e 🛈 For details see **[Documentation: Examples](doc/examples.md)**\u003cbr/\u003e\n\u003e 🛈 For details see **[Docker Compose: Examples](examples/)**\n\n#### Docker\n\n\u003ctable\u003e\n \u003ctr valign=\"top\" style=\"vertical-align:top\"\u003e\n  \u003ctd\u003e\n   \u003cstrong\u003eDefault vhost\u003c/strong\u003e\u003cbr/\u003e\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;💡 \u003ca href=\"doc/examples.md#-serve-staticfiles\" \u003eServe static files\u003c/a\u003e\u003cbr/\u003e\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;💡 \u003ca href=\"doc/examples.md#-serve-php-files-with-php-fpm\" \u003eServe PHP files\u003c/a\u003e\u003cbr/\u003e\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;💡 \u003ca href=\"doc/examples.md#-serve-php-files-with-php-fpm-and-sync-local-permissions\" \u003eSync local filestem permission\u003c/a\u003e\u003cbr/\u003e\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;💡 \u003ca href=\"doc/examples.md#-serve-php-files-with-php-fpm-over-https\" \u003eServe PHP files over HTTPS\u003c/a\u003e\u003cbr/\u003e\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;💡 \u003ca href=\"doc/examples.md#-act-as-a-reverse-proxy-for-nodejs\" \u003eReverse Proxy NodeJS\u003c/a\u003e\u003cbr/\u003e\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;💡 \u003ca href=\"doc/examples.md#-act-as-a-reverse-proxy-websockets\" \u003eReverse Proxy Websocket\u003c/a\u003e\u003cbr/\u003e\n  \u003c/td\u003e\n  \u003ctd\u003e\n   \u003cstrong\u003eUnlimited vhosts\u003c/strong\u003e\u003cbr/\u003e\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;💡 \u003ca href=\"#\" \u003eCustom \u003ccode\u003evhost-gen\u003c/code\u003e template\u003c/a\u003e\u003cbr/\u003e\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;💡 \u003ca href=\"doc/examples.md#-fully-functional-lemp-stack-with-mass-vhosts\" \u003eLEMP stack with PHP-FPM and MariaDB\u003c/a\u003e\u003cbr/\u003e\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;💡 \u003ca href=\"#\" \u003e\u003cstrong\u003eWordpress\u003c/strong\u003e setup\u003c/a\u003e\u003cbr/\u003e\n  \u003c/td\u003e\n \u003c/tr\u003e\n\u003c/table\u003e\n\n#### Docker Compose\n\n\u003ctable\u003e\n \u003ctr valign=\"top\" style=\"vertical-align:top\"\u003e\n  \u003ctd\u003e\n   \u003cstrong\u003eDefault vhost\u003c/strong\u003e\u003cbr/\u003e\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;💡 \u003ca href=\"examples/default-vhost__static-files/\" \u003eServe static files\u003c/a\u003e\u003cbr/\u003e\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;💡 \u003ca href=\"examples/default-vhost__php-fpm/\" \u003eServe PHP files\u003c/a\u003e\u003cbr/\u003e\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;💡 \u003ca href=\"examples/default-vhost__php-fpm__ssl/\" \u003eServe PHP files over HTTPS\u003c/a\u003e\u003cbr/\u003e\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;💡 \u003ca href=\"examples/default-vhost__reverse-proxy__node/\" \u003eReverse Proxy NodeJS\u003c/a\u003e\u003cbr/\u003e\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;💡 \u003ca href=\"examples/default-vhost__reverse-proxy__python/\" \u003eReverse Proxy Python\u003c/a\u003e\u003cbr/\u003e\n  \u003c/td\u003e\n  \u003ctd\u003e\n   \u003cstrong\u003eUnlimited vhosts\u003c/strong\u003e\u003cbr/\u003e\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;💡 \u003ca href=\"examples/mass-vhost__php-fpm__ssl/\" \u003eServe PHP files over HTTPS\u003c/a\u003e\u003cbr/\u003e\n   \u0026nbsp;\u0026nbsp;\u0026nbsp;💡 \u003ca href=\"examples/mass-vhost__reverse-proxy__ssl/\" \u003eReverse Proxy \u003cstrong\u003eand\u003c/strong\u003e PHP-FPM\u003c/a\u003e\u003cbr/\u003e\n  \u003c/td\u003e\n \u003c/tr\u003e\n\u003c/table\u003e\n\n\n\n## 👷 Architecture\n\nThe following diagram shows the basic architecture of this docker image.\n\n\n\u003e 🛈 For details see **[Documentation: Architecture](doc/architecture.md)**\n\n```bash\n       # mass-vhost                                     # main-vhost only\n       docker-entrypoint.sh                             docker-entrypoint.sh\n                |                                                |\n                ↓                                                ↓\n           supervisord (pid 1)                                 httpd (pid 1)\n          /     |\n         /      |\n       ↙        ↓\n  start       start\n  httpd      watcherd\n            /    |    \\\n           /     |     \\\n          ↓      ↓      ↘\n        sgn     rm      create-vhost.sh\n       httpd   vhost     |           |\n                         |           |\n                         ↓           ↓\n                      cert-gen    vhost-gen ⭢ generate vhost\n```\n\n\n\n## 🖤 Sister Projects\n\nShow some love for the following sister projects.\n\n\u003ctable\u003e\n \u003ctr\u003e\n  \u003cth\u003e🖤 Project\u003c/th\u003e\n  \u003cth\u003e🐱 GitHub\u003c/th\u003e\n  \u003cth\u003e🐋 DockerHub\u003c/th\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n  \u003ctd\u003e\u003ca title=\"Devilbox\" href=\"https://github.com/cytopia/devilbox\" \u003e\u003cimg width=\"256px\" src=\"https://raw.githubusercontent.com/devilbox/artwork/master/submissions_banner/cytopia/01/png/banner_256_trans.png\" /\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003ctd\u003e\u003ca href=\"https://github.com/cytopia/devilbox\"\u003e\u003ccode\u003eDevilbox\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003ctd\u003e\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n  \u003ctd\u003e\u003ca title=\"Docker PHP-FMP\" href=\"https://github.com/devilbox/docker-php-fpm\" \u003e\u003cimg width=\"256px\" src=\"https://raw.githubusercontent.com/devilbox/artwork/master/submissions_banner/cytopia/02/png/banner_256_trans.png\" /\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003ctd\u003e\u003ca href=\"https://github.com/devilbox/docker-php-fpm\"\u003e\u003ccode\u003edocker-php-fpm\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003ctd\u003e\u003ca href=\"https://hub.docker.com/r/devilbox/php-fpm\"\u003e\u003ccode\u003edevilbox/php-fpm\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n  \u003ctd\u003e\u003ca title=\"Docker PHP-FMP-Community\" href=\"https://github.com/devilbox/docker-php-fpm-community\" \u003e\u003cimg width=\"256px\" src=\"https://raw.githubusercontent.com/devilbox/artwork/master/submissions_banner/cytopia/03/png/banner_256_trans.png\" /\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003ctd\u003e\u003ca href=\"https://github.com/devilbox/docker-php-fpm-community\"\u003e\u003ccode\u003edocker-php-fpm-community\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003ctd\u003e\u003ca href=\"https://hub.docker.com/r/devilbox/php-fpm-community\"\u003e\u003ccode\u003edevilbox/php-fpm-community\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n  \u003ctd\u003e\u003ca title=\"Docker MySQL\" href=\"https://github.com/devilbox/docker-mysql\" \u003e\u003cimg width=\"256px\" src=\"https://raw.githubusercontent.com/devilbox/artwork/master/submissions_banner/cytopia/04/png/banner_256_trans.png\" /\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003ctd\u003e\u003ca href=\"https://github.com/devilbox/docker-mysql\"\u003e\u003ccode\u003edocker-mysql\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003ctd\u003e\u003ca href=\"https://hub.docker.com/r/devilbox/mysql\"\u003e\u003ccode\u003edevilbox/mysql\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n  \u003ctd\u003e\u003cimg width=\"256px\" src=\"https://raw.githubusercontent.com/devilbox/artwork/master/submissions_banner/cytopia/05/png/banner_256_trans.png\" /\u003e\u003c/td\u003e\n  \u003ctd\u003e\n   \u003ca href=\"https://github.com/devilbox/docker-apache-2.2\"\u003e\u003ccode\u003edocker-apache-2.2\u003c/code\u003e\u003c/a\u003e\u003cbr/\u003e\n   \u003ca href=\"https://github.com/devilbox/docker-apache-2.4\"\u003e\u003ccode\u003edocker-apache-2.4\u003c/code\u003e\u003c/a\u003e\u003cbr/\u003e\n   \u003ca href=\"https://github.com/devilbox/docker-nginx-stable\"\u003e\u003ccode\u003edocker-nginx-stable\u003c/code\u003e\u003c/a\u003e\u003cbr/\u003e\n   \u003ca href=\"https://github.com/devilbox/docker-nginx-mainline\"\u003e\u003ccode\u003edocker-nginx-mainline\u003c/code\u003e\u003c/a\u003e\n  \u003c/td\u003e\n  \u003ctd\u003e\n   \u003ca href=\"https://hub.docker.com/r/devilbox/apache-2.2\"\u003e\u003ccode\u003edevilbox/apache-2.2\u003c/code\u003e\u003c/a\u003e\u003cbr/\u003e\n   \u003ca href=\"https://hub.docker.com/r/devilbox/apache-2.4\"\u003e\u003ccode\u003edevilbox/apache-2.4\u003c/code\u003e\u003c/a\u003e\u003cbr/\u003e\n   \u003ca href=\"https://hub.docker.com/r/devilbox/nginx-stable\"\u003e\u003ccode\u003edevilbox/nginx-stable\u003c/code\u003e\u003c/a\u003e\u003cbr/\u003e\n   \u003ca href=\"https://hub.docker.com/r/devilbox/nginx-mainline\"\u003e\u003ccode\u003edevilbox/nginx-mainline\u003c/code\u003e\u003c/a\u003e\n  \u003c/td\u003e\n \u003ctr\u003e\n  \u003ctd\u003e\u003ca title=\"Bind DNS Server\" href=\"https://github.com/cytopia/docker-bind\" \u003e\u003cimg width=\"256px\" src=\"https://raw.githubusercontent.com/devilbox/artwork/master/submissions_banner/cytopia/06/png/banner_256_trans.png\" /\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003ctd\u003e\u003ca href=\"https://github.com/cytopia/docker-bind\"\u003e\u003ccode\u003edocker-bind\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n  \u003ctd\u003e\u003ca href=\"https://hub.docker.com/r/cytopia/bind\"\u003e\u003ccode\u003ecytopia/bind\u003c/code\u003e\u003c/a\u003e\u003c/td\u003e\n \u003c/tr\u003e\n \u003c/tr\u003e\n\u003c/table\u003e\n\n\n\n## 👫 Community\n\nIn case you seek help, go and visit the community pages.\n\n\u003ctable width=\"100%\" style=\"width:100%; display:table;\"\u003e\n \u003cthead\u003e\n  \u003ctr\u003e\n   \u003cth width=\"33%\" style=\"width:33%;\"\u003e\u003ch3\u003e\u003ca target=\"_blank\" href=\"https://devilbox.readthedocs.io\"\u003e📘 Documentation\u003c/a\u003e\u003c/h3\u003e\u003c/th\u003e\n   \u003cth width=\"33%\" style=\"width:33%;\"\u003e\u003ch3\u003e\u003ca target=\"_blank\" href=\"https://discord.gg/2wP3V6kBj4\"\u003e🎮 Discord\u003c/a\u003e\u003c/h3\u003e\u003c/th\u003e\n   \u003cth width=\"33%\" style=\"width:33%;\"\u003e\u003ch3\u003e\u003ca target=\"_blank\" href=\"https://devilbox.discourse.group\"\u003e🗪 Forum\u003c/a\u003e\u003c/h3\u003e\u003c/th\u003e\n  \u003c/tr\u003e\n \u003c/thead\u003e\n \u003ctbody style=\"vertical-align: middle; text-align: center;\"\u003e\n  \u003ctr\u003e\n   \u003ctd\u003e\n    \u003ca target=\"_blank\" href=\"https://devilbox.readthedocs.io\"\u003e\n     \u003cimg title=\"Documentation\" name=\"Documentation\" src=\"https://raw.githubusercontent.com/cytopia/icons/master/400x400/readthedocs.png\" /\u003e\n    \u003c/a\u003e\n   \u003c/td\u003e\n   \u003ctd\u003e\n    \u003ca target=\"_blank\" href=\"https://discord.gg/2wP3V6kBj4\"\u003e\n     \u003cimg title=\"Chat on Discord\" name=\"Chat on Discord\" src=\"https://raw.githubusercontent.com/cytopia/icons/master/400x400/discord.png\" /\u003e\n    \u003c/a\u003e\n   \u003c/td\u003e\n   \u003ctd\u003e\n    \u003ca target=\"_blank\" href=\"https://devilbox.discourse.group\"\u003e\n     \u003cimg title=\"Devilbox Forums\" name=\"Forum\" src=\"https://raw.githubusercontent.com/cytopia/icons/master/400x400/discourse.png\" /\u003e\n    \u003c/a\u003e\n   \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n  \u003ctd\u003e\u003ca target=\"_blank\" href=\"https://devilbox.readthedocs.io\"\u003edevilbox.readthedocs.io\u003c/a\u003e\u003c/td\u003e\n  \u003ctd\u003e\u003ca target=\"_blank\" href=\"https://discord.gg/2wP3V6kBj4\"\u003ediscord/devilbox\u003c/a\u003e\u003c/td\u003e\n  \u003ctd\u003e\u003ca target=\"_blank\" href=\"https://devilbox.discourse.group\"\u003edevilbox.discourse.group\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\n\n\n\n## 🧘 Maintainer\n\n**[@cytopia](https://github.com/cytopia)**\n\nI try to keep up with literally **over 100 projects** besides a full-time job.\nIf my work is making your life easier, consider contributing. 🖤\n\n* [GitHub Sponsorship](https://github.com/sponsors/cytopia)\n* [Patreon](https://www.patreon.com/devilbox)\n* [Open Collective](https://opencollective.com/devilbox)\n\n**Findme:**\n**🐱** [cytopia](https://github.com/cytopia) / [devilbox](https://github.com/devilbox) |\n**🐋** [cytopia](https://hub.docker.com/r/cytopia/) / [devilbox](https://hub.docker.com/r/devilbox/) |\n**🐦** [everythingcli](https://twitter.com/everythingcli) / [devilbox](https://twitter.com/devilbox) |\n**📖** [everythingcli.org](http://www.everythingcli.org/)\n\n**Contrib:** PyPI: [cytopia](https://pypi.org/user/cytopia/) **·**\nTerraform: [cytopia](https://registry.terraform.io/namespaces/cytopia) **·**\nAnsible: [cytopia](https://galaxy.ansible.com/cytopia)\n\n\n\n## 🗎 License\n\n**[MIT License](LICENSE)**\n\nCopyright (c) 2016 [cytopia](https://github.com/cytopia)\n","funding_links":["https://github.com/sponsors/cytopia","https://patreon.com/devilbox","https://www.patreon.com/devilbox","https://opencollective.com/devilbox"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevilbox%2Fdocker-nginx-stable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevilbox%2Fdocker-nginx-stable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevilbox%2Fdocker-nginx-stable/lists"}