{"id":13548240,"url":"https://github.com/tiredofit/docker-nginx","last_synced_at":"2025-04-05T09:31:48.492Z","repository":{"id":38857413,"uuid":"101110647","full_name":"tiredofit/docker-nginx","owner":"tiredofit","description":"Dockerized webserver with many customizable options","archived":false,"fork":false,"pushed_at":"2024-05-22T22:49:20.000Z","size":303,"stargazers_count":25,"open_issues_count":1,"forks_count":9,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-05-22T23:43:09.250Z","etag":null,"topics":["alpine","docker","nginx","zabbix-agent"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","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/tiredofit.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","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},"funding":{"github":["tiredofit"]}},"created_at":"2017-08-22T21:52:04.000Z","updated_at":"2024-05-29T18:33:22.187Z","dependencies_parsed_at":"2023-02-13T23:16:32.908Z","dependency_job_id":"7c031121-3aff-45e2-b9a1-fbe493a0b9a5","html_url":"https://github.com/tiredofit/docker-nginx","commit_stats":null,"previous_names":[],"tags_count":161,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tiredofit%2Fdocker-nginx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tiredofit%2Fdocker-nginx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tiredofit%2Fdocker-nginx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tiredofit%2Fdocker-nginx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tiredofit","download_url":"https://codeload.github.com/tiredofit/docker-nginx/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247318285,"owners_count":20919457,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["alpine","docker","nginx","zabbix-agent"],"created_at":"2024-08-01T12:01:07.764Z","updated_at":"2025-04-05T09:31:48.464Z","avatar_url":"https://github.com/tiredofit.png","language":"Dockerfile","funding_links":["https://github.com/sponsors/tiredofit","https://www.paypal.me/tiredofit"],"categories":["Dockerfile"],"sub_categories":[],"readme":"# github.com/tiredofit/docker-nginx\n\n\n[![GitHub release](https://img.shields.io/github/v/tag/tiredofit/docker-nginx?style=flat-square)](https://github.com/tiredofit/docker-nginx/releases/latest)\n[![Build Status](https://img.shields.io/github/actions/workflow/status/tiredofit/docker-nginx/main.yml?branch=main\u0026style=flat-square)](https://github.com/tiredofit/docker-nginx/actions)\n[![Docker Stars](https://img.shields.io/docker/stars/tiredofit/nginx.svg?style=flat-square\u0026logo=docker)](https://hub.docker.com/r/tiredofit/nginx/)\n[![Docker Pulls](https://img.shields.io/docker/pulls/tiredofit/nginx.svg?style=flat-square\u0026logo=docker)](https://hub.docker.com/r/tiredofit/nginx/)\n[![Become a sponsor](https://img.shields.io/badge/sponsor-tiredofit-181717.svg?logo=github\u0026style=flat-square)](https://github.com/sponsors/tiredofit)\n[![Paypal Donate](https://img.shields.io/badge/donate-paypal-00457c.svg?logo=paypal\u0026style=flat-square)](https://www.paypal.me/tiredofit)\n\n* * *\n\n## About\n\nThis will build a Docker image for [Nginx](https://www.nginx.org), for serving websites\n\n*    Tracks Mainline release channel\n*    Many options configurable including compression, performance\n*    Includes Monitoring (nginx status) on port 73\n*    Includes [Nginx Ultimate Bad Bot Blocker](https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker)\n*    Logrotate Included to roll over log files at 23:59, compress and retain for 7 days\n*    Ability to Password Protect (Basic), LDAP Authenticate or use LemonLDAP:NG Handler\n\n## Maintainer\n\n- [Dave Conroy](https://github.com/tiredofit)\n\n## Table of Contents\n\n- [About](#about)\n- [Maintainer](#maintainer)\n- [Table of Contents](#table-of-contents)\n- [Prerequisites and Assumptions](#prerequisites-and-assumptions)\n- [Installation](#installation)\n  - [Build from Source](#build-from-source)\n  - [Prebuilt Images](#prebuilt-images)\n    - [Multi Architecture](#multi-architecture)\n- [Configuration](#configuration)\n  - [Quick Start](#quick-start)\n  - [Persistent Storage](#persistent-storage)\n  - [Environment Variables](#environment-variables)\n    - [Base Images used](#base-images-used)\n    - [Authentication Options](#authentication-options)\n    - [Bot Blocking Options](#bot-blocking-options)\n    - [Logging Options](#logging-options)\n    - [Compression Options](#compression-options)\n    - [DDoS Options](#ddos-options)\n    - [Reverse Proxy Options](#reverse-proxy-options)\n    - [Container Options](#container-options)\n    - [Functionality Options](#functionality-options)\n  - [Maintenance Options](#maintenance-options)\n    - [Performance Options](#performance-options)\n  - [Networking](#networking)\n- [Maintenance](#maintenance)\n  - [Shell Access](#shell-access)\n- [Support](#support)\n  - [Usage](#usage)\n  - [Bugfixes](#bugfixes)\n  - [Feature Requests](#feature-requests)\n  - [Updates](#updates)\n- [License](#license)\n- [References](#references)\n\n## Prerequisites and Assumptions\n*  Assumes you are using some sort of SSL terminating reverse proxy such as:\n   *  [Traefik](https://github.com/tiredofit/docker-traefik)\n   *  [Nginx](https://github.com/jc21/nginx-proxy-manager)\n   *  [Caddy](https://github.com/caddyserver/caddy)\n\n## Installation\n\n### Build from Source\nClone this repository and build the image with `docker build \u003carguments\u003e (imagename) .`\n\n### Prebuilt Images\nBuilds of the image are available on [Docker Hub](https://hub.docker.com/r/tiredofit/nginx)\n\n```\ndocker pull docker.io/tiredofit/nginx):(imagetag)\n```\n\nBuilds of the image are also available on the [Github Container Registry](https://github.com/tiredofit/docker-nginx/pkgs/container/docker-nginx)\n\n```\ndocker pull ghcr.io/tiredofit/docker-nginx:(imagetag)\n```\n\nThe following image tags are available along with their tagged release based on what's written in the [Changelog](CHANGELOG.md):\n\n| Alpine Base | Tag            | Debian Base | Tag                 |\n| ----------- | -------------- | ----------- | ------------------- |\n| latest      | `:latest`      | latest      | `:debian`           |\n| latest      | `:alpine`      | Bookworm    | `:debian-bookworm ` |\n| edge        | `:alpine-edge` | Bullseye    | `:debian-bullseye`  |\n| 3.21        | `:alpine-3.21` | Buster      | `:debian-buster`    |\n| 3.20        | `:alpine-3.20` |             |                     |\n| 3.19        | `:alpine-3.19` |             |                     |\n| 3.16        | `:alpine-3.16` |             |                     |\n| 3.15        | `:alpine-3.15` |             |                     |\n| 3.12        | `:alpine-3.12` |             |                     |\n| 3.9         | `:alpine-3.9`  |             |                     |\n| 3.7         | `:alpine-3.7`  |             |                     |\n| 3.5         | `:alpine-3.5`  |             |                     |\n\n```bash\ndocker pull docker.io/tiredofit/nginx:(imagetag)\n```\n#### Multi Architecture\nImages are built primarily for `amd64` architecture, and may also include builds for `arm/v7`, `arm64` and others. These variants are all unsupported. Consider [sponsoring](https://github.com/sponsors/tiredofit) my work so that I can work with various hardware. To see if this image supports multiple architecures, type `docker manifest (image):(tag)`\n\n## Configuration\n\n### Quick Start\n\n* The quickest way to get started is using [docker-compose](https://docs.docker.com/compose/). See the examples folder for a working [docker-compose.yml](examples/docker-compose.yml) that can be modified for development or production use.\n\n* Set various [environment variables](#environment-variables) to understand the capabilities of this image.\n* Map [persistent storage](#data-volumes) for access to configuration and data files for backup.\n* Make [networking ports](#networking) available for public access if necessary\n\nThe container starts up and reads from `/etc/nginx/nginx.conf` for some basic configuration and to listen on port 73 internally for Nginx Status responses. Configuration of websites are done in `/etc/services.available` with the filename pattern of `site.conf`. You must set an environment variable for `NGINX_SITE_ENABLED` if you have more than one configuration in there if you only want to enable one of the configurartions, otherwise it will enable all of them. Use `NGINX_SITE_ENABLED=null` to break a parent image declaration.\n\nUse this as a starting point for your site configurations:\n````nginx\n  server {\n      ### Don't Touch This\n      listen {{NGINX_LISTEN_PORT}};\n      server_name localhost;\n      root {{NGINX_WEBROOT}};\n      ###\n\n      ### Populate your custom directives here\n      index  index.html index.htm;\n\n      location / {\n      #\n      }\n\n      ### Don't edit past here\n\n      include /etc/nginx/snippets/site_optimization.conf;\n      include /etc/nginx/snippets/exploit_protection.conf;\n}\n````\n\n### Persistent Storage\n\nThe following directories are used for configuration and can be mapped for persistent storage.\n\n| Directory   | Description                                                 |\n| ----------- | ----------------------------------------------------------- |\n| `/www/html` | Drop your Datafiles in this Directory to be served by Nginx |\n| `/www/logs` | Logfiles for Nginx error and Access                         |\n\n### Environment Variables\n\n#### Base Images used\n\nThis image relies on an [Alpine Linux](https://hub.docker.com/r/tiredofit/alpine) or [Debian Linux](https://hub.docker.com/r/tiredofit/debian) base image that relies on an [init system](https://github.com/just-containers/s6-overlay) for added capabilities. Outgoing SMTP capabilities are handlded via `msmtp`. Individual container performance monitoring is performed by [zabbix-agent](https://zabbix.org). Additional tools include: `bash`,`curl`,`less`,`logrotate`, `nano`.\n\nBe sure to view the following repositories to understand all the customizable options:\n\n| Image                                                  | Description                            |\n| ------------------------------------------------------ | -------------------------------------- |\n| [OS Base](https://github.com/tiredofit/docker-alpine/) | Customized Image based on Alpine Linux |\n| [OS Base](https://github.com/tiredofit/docker-debian/) | Customized Image based on Debian Linux |\n\n#### Authentication Options\n\nYou can choose to request visitors be authenticated before accessing your site. Options are below.\n\n| Parameter                                   | Description                                                                                 | Default             | `_FILE` |\n| ------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------- | ------- |\n| `NGINX_AUTHENTICATION_TYPE`                 | Protect the site with `BASIC`, `LDAP`, `LLNG`                                               | `NONE`              |         |\n| `NGINX_AUTHENTICATION_TITLE`                | Challenge response when visiting protected site                                             | `Please login`      |         |\n| `NGINX_AUTHENTICATION_BASIC_USER1`          | If `BASIC` chosen enter this for the username to protect site                               | `admin`             | x       |\n| `NGINX_AUTHENTICATION_BASIC_PASS1`          | If `BASIC` chosen enter this for the password to protect site                               | `password`          | x       |\n| `NGINX_AUTHENTICATION_BASIC_USER2`          | As above, increment for more users                                                          |                     | x       |\n| `NGINX_AUTHENTICATION_BASIC_PASS2`          | As above, increment for more users                                                          |                     | x       |\n| `NGINX_AUTHENTICATION_LDAP_HOST`            | Hostname and port number of LDAP Server - eg  `ldap://ldapserver:389`                       |                     | x       |\n| `NGINX_AUTHENTICATION_LDAP_BIND_DN`         | User to Bind to LDAP - eg   `cn=admin,dc=orgname,dc=org`                                    |                     | x       |\n| `NGINX_AUTHENTICATION_LDAP_BIND_PW`         | Password for Above Bind User - eg   `password`                                              |                     | x       |\n| `NGINX_AUTHENTICATION_LDAP_BASE_DN`         | Base Distringuished Name - eg `dc=hostname,dc=com`                                          |                     | x       |\n| `NGINX_AUTHENTICATION_LDAP_ATTRIBUTE`       | Unique Identifier Attrbiute -ie  `uid`                                                      |                     |         |\n| `NGINX_AUTHENTICATION_LDAP_SCOPE`           | LDAP Scope for searching - eg  `sub`                                                        |                     |         |\n| `NGINX_AUTHENTICATION_LDAP_FILTER`          | Define what object that is searched for (ie  `objectClass=person`)                          |                     |         |\n| `NGINX_AUTHENTICATION_LDAP_GROUP_ATTRIBUTE` | If searching inside of a group what is the Group Attribute - eg  `uniquemember`             |                     |         |\n| `NGINX_AUTHENTICATION_LLNG_HANDLER_HOST`    | If `LLNG` chosen use hostname and port of handler. Add multiple by seperating with comments | `llng-handler:2884` | x       |\n| `NGINX_AUTHENTICATION_LLNG_HANDLER_PORT`    | If `LLNG` chosen use this port for handler                                                  | `2884`              | x       |\n| `NGINX_AUTHENTICATION_LLNG_ATTRIBUTE1`      | Syntax: HEADER_NAME, Variable, Upstream Variable - See note below                           |                     |         |\n| `NGINX_AUTHENTICATION_LLNG_ATTRIBUTE2`      | Syntax: HEADER_NAME, Variable, Upstream Variable - See note below                           |                     |         |\n\nWhen working with `NGINX_AUTHENTICATION_LLNG_ATTRIBUTE2` you will need to omit any `$` chracters from your string. It will be added in upon container startup. Example:\n`NGINX_AUTHENTICATION_LLNG_ATTRIBUTE1=HTTP_AUTH_USER,uid,upstream_http_uid` will get converted into `HTTP_AUTH_USER,$uid,$upstream_http_uid` and get placed in the appropriate areas in the configuration.\n\n#### Bot Blocking Options\n\n| Parameter                           | Description                                                                                                                                                                                                    | Default                                             |\n| ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |\n| `NGINX_BLOCK_BOTS_WHITELIST_DOMAIN` | Domains to whitelist from blocking comma seperated e.g. `example1.com,example2.com`                                                                                                                            |                                                     |\n| `NGINX_BLOCK_BOTS_WHITELIST_IP`     | IP Addresses/Networks to Whitelist from Blocking comma seperated                                                                                                                                               | `127.0.0.1,10.0.0.0/8,172.16.0.0/12,192.168.0.0/24` |\n| `NGINX_BLOCK_BOTS`                  | Bots to Block `ALL` `AOL` `BING` `DOCOMO` `DUCKDUCKGO` `FACEBOOK` `GOOGLE` `LINKEDIN` `MISC` `MSN` `SAMSUNG` `SLACK` `SLURP` `TWITTER` `WORDPRESS` `YAHOO` or `yourcustom-useragent` in Comma Seperated values |                                                     |\n| `NGINX_ENABLE_BLOCK_BOTS`           | Block Bots and Crawlers                                                                                                                                                                                        | `FALSE`                                             |\n\nFor more details on how Bot Blocking works please visit [Nginx Ultimate Bad Bot Blocker](https://github.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker)\n\n#### Logging Options\n\n| Parameter                    | Description                               | Default           |\n| ---------------------------- | ----------------------------------------- | ----------------- |\n| `NGINX_LOG_ACCESS_FILE`      | Nginx websites access logs                | `access.log`      |\n| `NGINX_LOG_ACCESS_LOCATION`  | Location inside container for saving logs | `/www/logs/nginx` |\n| `NGINX_LOG_ACCESS_FORMAT`    | Log Format `standard` or `json`           | `standard`        |\n| `NGINX_LOG_BLOCKED_FILE`     | If exploit protection `TRUE`              | `access.log`      |\n| `NGINX_LOG_BLOCKED_LOCATION` | Location inside container for saving logs | `/www/logs/nginx` |\n| `NGINX_LOG_BLOCKED_FORMAT`   | Log Format `standard` or `json`           | `standard`        |\n| `NGINX_LOG_ERROR_FILE`       | Nginx server and websites error log name  | `error.log`       |\n| `NGINX_LOG_ERROR_LOCATION`   | Location inside container for saving logs | `/www/logs/nginx` |\n| `NGINX_LOG_LEVEL_ERROR`      | How much verbosity to use with error logs | `warn`            |\n\n#### Compression Options\n\nPresently you can compress your served content with gzip and brotli. More compression options to come in future..\n\n| Parameter                             | Description                                  | Default                                                                                                  |\n| ------------------------------------- | -------------------------------------------- | -------------------------------------------------------------------------------------------------------- |\n| `NGINX_ENABLE_COMPRESSION_BROTLI`     | Enable Brotli Compression                    | `TRUE`                                                                                                   |\n| `NGINX_COMPRESSION_BROTLI_LEVEL`      | Compression Level for Brotli                 | `6`                                                                                                      |\n| `NGINX_COMPRESSION_BROTLI_MIN_LENGTH` | Minimum length of content before compressing | `20`                                                                                                     |\n| `NGINX_COMPRESSION_BROTLI_TYPES`      | What filetypes to compress                   | `text/plain text/css text/xml text/javascript application/x-javascript application/json application/xml` |\n| `NGINX_COMPRESSION_BROTLI_WINDOW`     |                                              | `512k`                                                                                                   |\n| `NGINX_ENABLE_COMPRESSION_GZIP`       | Enable GZIP Compression                      | `TRUE`                                                                                                   |\n| `NGINX_COMPRESSION_GZIP_BUFFERS`      |                                              | `16 8k`                                                                                                  |\n| `NGINX_COMPRESSION_GZIP_DISABLE`      | Don't compress for these user agents         | `MSIE [1-6].(?!.*SV1)`                                                                                   |\n| `NGINX_COMPRESSION_GZIP_HTTP_VERSION` |                                              | `1.1`                                                                                                    |\n| `NGINX_COMPRESSION_GZIP_LEVEL`        | Compression Level                            | `6`                                                                                                      |\n| `NGINX_COMPRESSION_GZIP_MIN_LENGTH`   | Minimum length of content before compressing | `10240`                                                                                                  |\n| `NGINX_COMPRESSION_GZIP_PROXIED`      |                                              | `expired no-cache no-store private auth`                                                                 |\n| `NGINX_COMPRESSION_GZIP_TYPES`        | Types of content to compress                 | `text/plain text/css text/xml text/javascript application/x-javascript application/json application/xml` |\n| `NGINX_COMPRESSION_GZIP_VARY`         |                                              | `TRUE`                                                                                                   |\n\n#### DDoS Options\n\n| Parameter                       | Description                        | Default |\n| ------------------------------- | ---------------------------------- | ------- |\n| `NGINX_ENABLE_DDOS_PROTECTION`  | Enable simple DDoS Protection      | `FALSE` |\n| `NGINX_DDOS_CONNECTIONS_PER_IP` | Limit amount of connections per IP | `10m`   |\n| `NGINX_DDOS_REQUESTS_PER_IP`    | Limit amount of requests per IP    | `5r/s`  |\n\n#### Reverse Proxy Options\n\n| Parameter                    | Description                                                       | Default           |\n| ---------------------------- | ----------------------------------------------------------------- | ----------------- |\n| `NGINX_ENABLE_FASTCGI_HTTPS` | Set fastcgi_param HTTPS 'on'                                      | `FALSE`           |\n| `NGINX_ENABLE_REVERSE_PROXY` | Helpers for when behind a reverse proxy                           | `TRUE`            |\n| `NGINX_REAL_IP_HEADER`       | What is the header passed containing the visitors IP              | `X-Forwarded-For` |\n| `NGINX_SET_REAL_IP_FROM`     | Set the network of your Docker Network if having IP lookup issues | `172.16.0.0/12`   |\n\n#### Container Options\n\n| Parameter                                | Description                                                                                                      | Default     |\n| ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ----------- |\n| `NGINX_ENABLE_APPLICATION_CONFIGURATION` | Don't automatically setup /etc/nginx/sites.available files - Useful for volume mapping/overriding                | `TRUE`      |\n| `NGINX_ENABLE_CREATE_SAMPLE_HTML`        | If no index.html found - create a sample one to prove container works                                            | `TRUE`      |\n| `NGINX_ENABLE_SITE_OPTIMIZATIONS`        | Deny access to some files and URLs, send caching tags                                                            | `TRUE`      |\n| `NGINX_INCLUDE_CONFIGURATION`            | Include configuration in your website application file. eg `/www/website/nginx.conf`                             |             |\n| `NGINX_RELOAD_ON_CONFIG_CHANGE`          | Automatically reload nginx on configuration file change                                                          | `FALSE`     |\n| `NGINX_LISTEN_PORT`                      | Nginx listening port                                                                                             | `80`        |\n| `NGINX_POST_INIT_SCRIPT`                 | If you wish to run a bash script before the nginx process runs enter the path here, seperate multiple by commas. |             |\n| `NGINX_WEBROOT`                          | Where to serve content from inside the container                                                                 | `/www/html` |\n| `NGINX_WEBROOT_SUFFIX`                   | Append a suffix onto the nginx configuration to serve files from a subfolder e.g. `/public`                      |             |\n\n#### Functionality Options\n\n| Parameter                       | Description                                                                           | Default    |\n| ------------------------------- | ------------------------------------------------------------------------------------- | ---------- |\n| `NGINX_FORCE_RESET_PERMISSIONS` | Force setting Nginx files ownership to web server user                                | `TRUE`     |\n| `NGINX_MODE`                    | Set to `NORMAL`, `MAINTENANCE` , `PROXY`, `REDIRECT`                                  | `NORMAL`   |\n| `NGINX_REDIRECT_URL`            | If `REDIRECT` set enter full url to forward all traffic to eg `https://example.com`   |            |\n| `NGINX_RESOLVER`                | Resolve hostnames via DNS. Space seperated values. e.g. `127.0.0.11`                  |            |\n| `NGINX_PROXY_URL`               | If `REDIRECT` set enter full url to proxy all traffic to eg `https://example.com:443` |            |\n| `NGINX_SITE_ENABLED`            | What sites to enable in `/etc/nginx/sites.available` Don't use `.conf` suffix         | `ALL`      |\n| `NGINX_USER`                    | What user to run nginx as inside container                                            | `nginx`    |\n| `NGINX_GROUP`                   | What group to run nginx as inside container                                           | `www-data` |\n\nIf set to `MAINTNENANCE` a single page will show visitors that the server is being worked on.\n\n### Maintenance Options\n| Parameter                        | Description                                                                                                   | Default                     |\n| -------------------------------- | ------------------------------------------------------------------------------------------------------------- | --------------------------- |\n| `NGINX_MAINTENANCE_TYPE`         | Serve `local` file or `redirect` or `proxy` to a URL                                                          | `local`                     |\n| `NGINX_MAINTENANCE_PATH`         | (local) Path where the maintenance page resides                                                               | `/assets/nginx/maintenance` |\n| `NGINX_MAINTENANCE_FILE`         | (local) File to load while in maintenance mode                                                                | `index.html`                |\n| `NGINX_MAINTENANCE_REMOTE_URL`   | (local) If you wish to download an html file from a remote location to overwrite the above enter the URL here |                             |\n| `NGINX_MAINTENANCE_PROXY_URL`    | What url eg `https://example.com` to transparently proxy for the user when they visit the site                | `http://maintenance`        |\n| `NGINX_MAINTENANCE_REDIRECT_URL` | What url eg `https://example.com` to redirect in a uers browser when they visit the site                      |                             |\n\nYou can also enter into the container and type `maintenance ARG`, where ARG is either `ON`,`OFF`, or `SLEEP (seconds)` which will temporarily place the site in maintenance mode and then restore it back to normal after time has passed.\n\n#### Performance Options\n\n| Parameter                                | Description                                                                             | Default  |\n| ---------------------------------------- | --------------------------------------------------------------------------------------- | -------- |\n| `NGINX_CLIENT_BODY_TIMEOUT`              | Request timed out                                                                       | `60`     |\n| `NGINX_ENABLE_EPOLL`                     | Optmized to serve many clients with each thread, essential for linux                    | `TRUE`   |\n| `NGINX_ENABLE_MULTI_ACCEPT`              | Accept as many connections as possible, may flood worker connections if set too low     | `TRUE`   |\n| `NGINX_ENABLE_RESET_TIMEDOUT_CONNECTION` | Allow the server to close connection on non responding client, this will free up memory | `TRUE`   |\n| `NGINX_ENABLE_SENDFILE`                  | Copies data between one FD and other from within the kernel                             | `TRUE`   |\n| `NGINX_ENABLE_SERVER_TOKENS`             | Show Nginx version on responses                                                         | `FALSE`  |\n| `NGINX_ENABLE_TCPNODELAY`                | Don't buffer data sent, good for small data bursts in real time                         | `TRUE`   |\n| `NGINX_ENABLE_TCPNOPUSH`                 | Send headers in one peace, its better then sending them one by one                      | `TRUE`   |\n| `NGINX_ENABLE_UPSTREAM_KEEPALIVE`        | Reuse connections when using upstream (LLNG Auth, FastCGI etc)                          | `TRUE`   |\n| `NGINX_KEEPALIVE_REQUESTS`               | Number of requests client can make over keep-alive                                      | `100000` |\n| `NGINX_KEEPALIVE_TIMEOUT`                | Server will close connection after this time                                            | `75`     |\n| `NGINX_SEND_TIMEOUT`                     | If client stop responding, free up memory                                               | `60`     |\n| `NGINX_UPLOAD_MAX_SIZE`                  | Maximum Upload Size                                                                     | `2G`     |\n| `NGINX_WORKER_CONNECTIONS`               | Determines how much clients will be served per worker                                   | `1024`   |\n| `NGINX_WORKER_PROCESSES`                 | How many processes to spawn                                                             | `auto`   |\n| `NGINX_WORKER_RLIMIT_NOFILE`             | Number of file descriptors used for nginx                                               | `100000` |\n| `NGINX_ENABLE_OPEN_FILE_CACHE`           | Cache informations about FDs, frequently accessed files                                 | `TRUE`   |\n| `NGINX_ENABLE_OPEN_FILE_CACHE_ERRORS`    | Cache errors like 404                                                                   | `TRUE`   |\n| `NGINX_OPEN_FILE_CACHE_INACTIVE`         | Stop caching after inactive                                                             | `5m`     |\n| `NGINX_OPEN_FILE_CACHE_MAX`              | Maximum files to cache                                                                  | `200000` |\n| `NGINX_OPEN_FILE_CACHE_MIN_USES`         | Minimum uses of file before cashing                                                     | `2`      |\n| `NGINX_OPEN_FILE_CACHE_VALID`            | Cache a file if has been accessed within this window                                    | `2m`     |\n| `NGINX_ENABLE_PROXY_BUFFERING`           | Enable Proxy Buffering                                                                  | `TRUE`   |\n| `NGINX_PROXY_BUFFERS`                    | Proxy Buffers                                                                           | `4 256k` |\n| `NGINX_PROXY_BUFFER_SIZE`                | Proxy Buffer Size                                                                       | `128k`   |\n| `NGINX_PROXY_BUSY_BUFFERS_SIZE`          | Proxy Busy Buffers Size                                                                 | `256k`   |\n| `NGINX_CLIENT_BODY_BUFFER_SIZE`          | Client Buffer size                                                                      | `16k`    |\n| `NGINX_UPSTREAM_KEEPALIVE`               | Keepalive connections to utilize for upstream                                           | `32`     |\n| `NGINX_FASTCGI_BUFFERS`                  | Amount of FastCGI Buffers                                                               | `16 16k` |\n| `NGINX_FASTCGI_BUFFER_SIZE`              | FastCGI Buffer Size                                                                     | `32k`    |\n| `NGINX_SERVER_NAMES_HASH_BUCKET_SIZE`    | Server names hash size (`256`` if `NGINX_ENABLE_BLOCK_BOTS=TRUE`)                       | `32`     |\n\n### Networking\n\nThe following ports are exposed.\n\n| Port | Description |\n| ---- | ----------- |\n| `80` | HTTP        |\n\n* * *\n## Maintenance\n\n### Shell Access\n\nFor debugging and maintenance purposes you may want access the containers shell.\n\n``bash\ndocker exec -it (whatever your container name is) bash\n``\n## Support\n\nThese images were built to serve a specific need in a production environment and gradually have had more functionality added based on requests from the community.\n### Usage\n- The [Discussions board](../../discussions) is a great place for working with the community on tips and tricks of using this image.\n- [Sponsor me](https://tiredofit.ca/sponsor) for personalized support\n### Bugfixes\n- Please, submit a [Bug Report](issues/new) if something isn't working as expected. I'll do my best to issue a fix in short order.\n\n### Feature Requests\n- Feel free to submit a feature request, however there is no guarantee that it will be added, or at what timeline.\n- [Sponsor me](https://tiredofit.ca/sponsor) regarding development of features.\n\n### Updates\n- Best effort to track upstream changes, More priority if I am actively using the image in a production environment.\n- [Sponsor me](https://tiredofit.ca/sponsor) for up to date releases.\n\n## License\nMIT. See [LICENSE](LICENSE) for more details.\n## References\n\n* https://nginx.org/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftiredofit%2Fdocker-nginx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftiredofit%2Fdocker-nginx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftiredofit%2Fdocker-nginx/lists"}