To help you tune BunkerWeb, we have made an easy-to-use settings generator tool available at [config.bunkerweb.io](https://config.bunkerweb.io/?utm_campaign=self&utm_source=doc).
This section contains the full list of settings supported by BunkerWeb. If you are not yet familiar with BunkerWeb, you should first read the [concepts](concepts.md) section of the documentation. Please follow the instructions for your own [integration](integrations.md) on how to apply the settings.
As a general rule when multisite mode is enabled, if you want to apply settings with multisite context to a specific server, you will need to add the primary (first) server name as a prefix like `www.example.com_USE_ANTIBOT=captcha` or `myapp.example.com_USE_GZIP=yes` for example.
When settings are considered as "multiple", it means that you can have multiple groups of settings for the same feature by adding numbers as suffix like `REVERSE_PROXY_URL_1=/subdir`, `REVERSE_PROXY_HOST_1=http://myhost1`, `REVERSE_PROXY_URL_2=/anotherdir`, `REVERSE_PROXY_HOST_2=http://myhost2`, ... for example.
| `IS_LOADING` | `no` | global | no | Internal use : set to yes when BW is loading. |
| `NGINX_PREFIX` | `/etc/nginx/` | global | no | Where nginx will search for configurations. |
| `HTTP_PORT` | `8080` | global | yes | HTTP port number which bunkerweb binds to. |
| `HTTPS_PORT` | `8443` | global | yes | HTTPS port number which bunkerweb binds to. |
| `MULTISITE` | `no` | global | no | Multi site activation. |
| `SERVER_NAME` | `www.example.com` | multisite | no | List of the virtual hosts served by bunkerweb. |
| `WORKER_PROCESSES` | `auto` | global | no | Number of worker processes. |
| `WORKER_RLIMIT_NOFILE` | `2048` | global | no | Maximum number of open files for worker processes. |
| `WORKER_CONNECTIONS` | `1024` | global | no | Maximum number of connections per worker. |
| `LOG_FORMAT` | `$host $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"` | global | no | The format to use for access logs. |
| `LOG_LEVEL` | `notice` | global | no | The level to use for error logs. |
| `DNS_RESOLVERS` | `127.0.0.11` | global | no | DNS addresses of resolvers to use. |
| `WORKERLOCK_MEMORY_SIZE` | `48k` | global | no | Size of lua_shared_dict for initialization workers |
| `DATASTORE_MEMORY_SIZE` | `64m` | global | no | Size of the internal datastore. |
| `CACHESTORE_MEMORY_SIZE` | `64m` | global | no | Size of the internal cachestore. |
| `CACHESTORE_IPC_MEMORY_SIZE` | `16m` | global | no | Size of the internal cachestore (ipc). |
| `CACHESTORE_MISS_MEMORY_SIZE` | `16m` | global | no | Size of the internal cachestore (miss). |
| `CACHESTORE_LOCKS_MEMORY_SIZE` | `16m` | global | no | Size of the internal cachestore (locks). |
| `USE_API` | `yes` | global | no | Activate the API to control BunkerWeb. |
| `API_HTTP_PORT` | `5000` | global | no | Listen port number for the API. |
| `API_LISTEN_IP` | `0.0.0.0` | global | no | Listen IP address for the API. |
| `API_SERVER_NAME` | `bwapi` | global | no | Server name (virtual host) for the API. |
| `API_WHITELIST_IP` | `127.0.0.0/8` | global | no | List of IP/network allowed to contact the API. |
| `AUTOCONF_MODE` | `no` | global | no | Enable Autoconf Docker integration. |
| `SWARM_MODE` | `no` | global | no | Enable Docker Swarm integration. |
| `KUBERNETES_MODE` | `no` | global | no | Enable Kubernetes integration. |
| `SERVER_TYPE` | `http` | multisite | no | Server type : http or stream. |
| `LISTEN_STREAM` | `yes` | multisite | no | Enable listening for non-ssl (passthrough). |
| `LISTEN_STREAM_PORT` | `1337` | multisite | yes | Listening port for non-ssl (passthrough). |
| `LISTEN_STREAM_PORT_SSL` | `4242` | multisite | yes | Listening port for ssl (passthrough). |
| `USE_IPV6` | `no` | global | no | Enable IPv6 connectivity. |
| `IS_DRAFT` | `no` | multisite | no | Internal use : set to yes when the service is in draft mode. |
| `TIMERS_LOG_LEVEL` | `debug` | global | no | Log level for timers. |
| `BUNKERWEB_INSTANCES` | `127.0.0.1` | global | no | List of BunkerWeb instances separated with spaces (format : fqdn-or-ip:5000 http://fqdn-or-ip:5000) |
| `USE_TEMPLATE` | | multisite | no | Config template to use that will override the default values of specific settings. |
| `SECURITY_MODE` | `block` | multisite | no | Defines the response to threats: "detect" to monitor and log, or "block" to prevent access and log incidents. |
| `ANTIBOT_URI` | `/challenge` | multisite | no | Unused URI that clients will be redirected to to solve the challenge. |
| `ANTIBOT_TIME_RESOLVE` | `60` | multisite | no | Maximum time (in seconds) clients have to resolve the challenge. Once this time has passed, a new challenge will be generated. |
| `ANTIBOT_TIME_VALID` | `86400` | multisite | no | Maximum validity time of solved challenges. Once this time has passed, clients will need to resolve a new one. |
| `ANTIBOT_RECAPTCHA_SCORE` | `0.7` | multisite | no | Minimum score required for reCAPTCHA challenge (Only compatible with reCAPTCHA v3). |
| `ANTIBOT_RECAPTCHA_SITEKEY` | | multisite | no | Sitekey for reCAPTCHA challenge. |
| `ANTIBOT_RECAPTCHA_SECRET` | | multisite | no | Secret for reCAPTCHA challenge. |
| `ANTIBOT_HCAPTCHA_SITEKEY` | | multisite | no | Sitekey for hCaptcha challenge. |
| `ANTIBOT_HCAPTCHA_SECRET` | | multisite | no | Secret for hCaptcha challenge. |
| `ANTIBOT_TURNSTILE_SITEKEY` | | multisite | no | Sitekey for Turnstile challenge. |
| `ANTIBOT_TURNSTILE_SECRET` | | multisite | no | Secret for Turnstile challenge. |
| `ANTIBOT_MCAPTCHA_SITEKEY` | | multisite | no | Sitekey for mCaptcha challenge. |
| `ANTIBOT_MCAPTCHA_SECRET` | | multisite | no | Secret for mCaptcha challenge. |
| `ANTIBOT_MCAPTCHA_URL` | `https://demo.mcaptcha.org` | multisite | no | Domain to use for mCaptcha challenge. |
| `BLACKLIST_IP` | | multisite | no | List of IP/network, separated with spaces, to block. |
| `BLACKLIST_RDNS` | `.shodan.io .censys.io` | multisite | no | List of reverse DNS suffixes, separated with spaces, to block. |
| `BLACKLIST_RDNS_GLOBAL` | `yes` | multisite | no | Only perform RDNS blacklist checks on global IP addresses. |
| `BLACKLIST_ASN` | | multisite | no | List of ASN numbers, separated with spaces, to block. |
| `BLACKLIST_USER_AGENT` | | multisite | no | List of User-Agent (PCRE regex), separated with spaces, to block. |
| `BLACKLIST_URI` | | multisite | no | List of URI (PCRE regex), separated with spaces, to block. |
| `BLACKLIST_IGNORE_IP` | | multisite | no | List of IP/network, separated with spaces, to ignore in the blacklist. |
| `BLACKLIST_IGNORE_RDNS` | | multisite | no | List of reverse DNS suffixes, separated with spaces, to ignore in the blacklist. |
| `BLACKLIST_IGNORE_ASN` | | multisite | no | List of ASN numbers, separated with spaces, to ignore in the blacklist. |
| `BLACKLIST_IGNORE_USER_AGENT` | | multisite | no | List of User-Agent (PCRE regex), separated with spaces, to ignore in the blacklist. |
| `BLACKLIST_IGNORE_URI` | | multisite | no | List of URI (PCRE regex), separated with spaces, to ignore in the blacklist. |
| `BLACKLIST_IP_URLS` | `https://www.dan.me.uk/torlist/?exit` | multisite | no | List of URLs, separated with spaces, containing bad IP/network to block. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |
| `BLACKLIST_RDNS_URLS` | | multisite | no | List of URLs, separated with spaces, containing reverse DNS suffixes to block. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |
| `BLACKLIST_ASN_URLS` | | multisite | no | List of URLs, separated with spaces, containing ASN to block. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |
| `BLACKLIST_USER_AGENT_URLS` | `https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/_generator_lists/bad-user-agents.list` | multisite | no | List of URLs, separated with spaces, containing bad User-Agent to block. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |
| `BLACKLIST_URI_URLS` | | multisite | no | List of URLs, separated with spaces, containing bad URI to block. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |
| `BLACKLIST_IGNORE_IP_URLS` | | multisite | no | List of URLs, separated with spaces, containing IP/network to ignore in the blacklist. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |
| `BLACKLIST_IGNORE_RDNS_URLS` | | multisite | no | List of URLs, separated with spaces, containing reverse DNS suffixes to ignore in the blacklist. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |
| `BLACKLIST_IGNORE_ASN_URLS` | | multisite | no | List of URLs, separated with spaces, containing ASN to ignore in the blacklist. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |
| `BLACKLIST_IGNORE_USER_AGENT_URLS` | | multisite | no | List of URLs, separated with spaces, containing User-Agent to ignore in the blacklist. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |
| `BLACKLIST_IGNORE_URI_URLS` | | multisite | no | List of URLs, separated with spaces, containing URI to ignore in the blacklist. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |
| `CORS_ALLOW_ORIGIN` | `self` | multisite | no | Allowed origins to make CORS requests : PCRE regex or * or self (for the same origin). |
| `CORS_ALLOW_METHODS` | `GET, POST, OPTIONS` | multisite | no | Value of the Access-Control-Allow-Methods header. |
| `CORS_ALLOW_HEADERS` | `DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range` | multisite | no | Value of the Access-Control-Allow-Headers header. |
| `CORS_ALLOW_CREDENTIALS` | `no` | multisite | no | Send the Access-Control-Allow-Credentials header. |
| `CORS_EXPOSE_HEADERS` | `Content-Length,Content-Range` | multisite | no | Value of the Access-Control-Expose-Headers header. |
| `CROSS_ORIGIN_OPENER_POLICY` | `same-origin` | multisite | no | Value for the Cross-Origin-Opener-Policy header. |
| `CROSS_ORIGIN_EMBEDDER_POLICY` | `require-corp` | multisite | no | Value for the Cross-Origin-Embedder-Policy header. |
| `CROSS_ORIGIN_RESOURCE_POLICY` | `same-site` | multisite | no | Value for the Cross-Origin-Resource-Policy header. |
| `CORS_MAX_AGE` | `86400` | multisite | no | Value of the Access-Control-Max-Age header. |
| `CORS_DENY_REQUEST` | `yes` | multisite | no | Deny request and don't send it to backend if Origin is not allowed. |
| `BLACKLIST_COUNTRY` | | multisite | no | Deny access if the country of the client is in the list (ISO 3166-1 alpha-2 format separated with spaces). |
| `WHITELIST_COUNTRY` | | multisite | no | Deny access if the country of the client is not in the list (ISO 3166-1 alpha-2 format separated with spaces). |
| `USE_CUSTOM_SSL` | `no` | multisite | no | Use custom SSL certificate. |
| `CUSTOM_SSL_CERT_PRIORITY` | `file` | multisite | no | Choose whether to prioritize the certificate from file path or from base64 data. (file | data) |
| `CUSTOM_SSL_CERT` | | multisite | no | Full path of the certificate or bundle file (must be readable by the scheduler). |
| `CUSTOM_SSL_KEY` | | multisite | no | Full path of the key file (must be readable by the scheduler). |
| `CUSTOM_SSL_CERT_DATA` | | multisite | no | Certificate data encoded in base64. |
| `CUSTOM_SSL_KEY_DATA` | | multisite | no | Key data encoded in base64. |
| `DATABASE_URI` | `sqlite:////var/lib/bunkerweb/db.sqlite3` | global | no | The database URI, following the sqlalchemy format. |
| `DATABASE_URI_READONLY` | | global | no | The database URI for read-only operations, it can also serve as a fallback if the main database is down. Following the sqlalchemy format. |
| `DATABASE_LOG_LEVEL` | `warning` | global | no | The level to use for database logs. |
| `DATABASE_MAX_JOBS_RUNS` | `10000` | global | no | The maximum number of jobs runs to keep in the database. |
| `ERRORS` | | multisite | no | List of HTTP error code and corresponding error pages, separated with spaces (404=/my404.html 403=/errors/403.html ...). |
| `INTERCEPTED_ERROR_CODES` | `400 401 403 404 405 413 429 500 501 502 503 504` | multisite | no | List of HTTP error code intercepted by BunkerWeb |
| `GREYLIST_IP` | | multisite | no | List of IP/network, separated with spaces, to put into the greylist. |
| `GREYLIST_RDNS` | | multisite | no | List of reverse DNS suffixes, separated with spaces, to put into the greylist. |
| `GREYLIST_RDNS_GLOBAL` | `yes` | multisite | no | Only perform RDNS greylist checks on global IP addresses. |
| `GREYLIST_ASN` | | multisite | no | List of ASN numbers, separated with spaces, to put into the greylist. |
| `GREYLIST_USER_AGENT` | | multisite | no | List of User-Agent (PCRE regex), separated with spaces, to put into the greylist. |
| `GREYLIST_URI` | | multisite | no | List of URI (PCRE regex), separated with spaces, to put into the greylist. |
| `GREYLIST_IP_URLS` | | multisite | no | List of URLs, separated with spaces, containing good IP/network to put into the greylist. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |
| `GREYLIST_RDNS_URLS` | | multisite | no | List of URLs, separated with spaces, containing reverse DNS suffixes to put into the greylist. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |
| `GREYLIST_ASN_URLS` | | multisite | no | List of URLs, separated with spaces, containing ASN to put into the greylist. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |
| `GREYLIST_USER_AGENT_URLS` | | multisite | no | List of URLs, separated with spaces, containing good User-Agent to put into the greylist. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |
| `GREYLIST_URI_URLS` | | multisite | no | List of URLs, separated with spaces, containing bad URI to put into the greylist. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |
| `KEEP_UPSTREAM_HEADERS` | `Content-Security-Policy Permissions-Policy X-Frame-Options` | multisite | no | Headers to keep from upstream (Header1 Header2 Header3 ... or * for all). |
| `STRICT_TRANSPORT_SECURITY` | `max-age=63072000; includeSubDomains; preload` | multisite | no | Value for the Strict-Transport-Security (HSTS) header. |
| `COOKIE_FLAGS` | `* HttpOnly SameSite=Lax` | multisite | yes | Cookie flags automatically added to all cookies (value accepted for nginx_cookie_flag_module). |
| `COOKIE_AUTO_SECURE_FLAG` | `yes` | multisite | no | Automatically add the Secure flag to all cookies. |
| `CONTENT_SECURITY_POLICY` | `object-src 'none'; form-action 'self'; frame-ancestors 'self';` | multisite | no | Value for the Content-Security-Policy header. |
| `CONTENT_SECURITY_POLICY_REPORT_ONLY` | `no` | multisite | no | Send reports for violations of the Content-Security-Policy header instead of blocking them. |
| `REFERRER_POLICY` | `strict-origin-when-cross-origin` | multisite | no | Value for the Referrer-Policy header. |
| `EMAIL_LETS_ENCRYPT` | | multisite | no | Email used for Let's Encrypt notification and in certificate. |
| `LETS_ENCRYPT_CHALLENGE` | `http` | multisite | no | The challenge type to use for Let's Encrypt (http or dns). |
| `LETS_ENCRYPT_DNS_PROVIDER` | | multisite | no | The DNS provider to use for DNS challenges. |
| `LETS_ENCRYPT_DNS_PROPAGATION` | `default` | multisite | no | The time to wait for DNS propagation in seconds for DNS challenges. |
| `LETS_ENCRYPT_DNS_CREDENTIAL_ITEM` | | multisite | yes | Configuration item that will be added to the credentials.ini file for the DNS provider (e.g. 'cloudflare_api_token 123456') for DNS challenges. |
| `USE_LETS_ENCRYPT_WILDCARD` | `no` | multisite | no | Create wildcard certificates for all domains. This allows a single certificate to secure multiple subdomains. (Only available with DNS challenges) |
| `USE_LETS_ENCRYPT_STAGING` | `no` | multisite | no | Use the staging environment for Let’s Encrypt certificate generation. Useful when you are testing your deployments to avoid being rate limited in the production environment. |
| `LETS_ENCRYPT_CLEAR_OLD_CERTS` | `no` | global | no | Clear old certificates when renewing. |
| `DISABLE_DEFAULT_SERVER` | `no` | global | no | Deny HTTP request if the request vhost is unknown. |
| `DISABLE_DEFAULT_SERVER_STRICT_SNI` | `no` | global | no | Close SSL/TLS connection if the SNI is unknown. |
| `ALLOWED_METHODS` | `GET | POST | HEAD` | multisite | no | Allowed HTTP and WebDAV methods, separated with pipes to be sent by clients. |
| `MAX_CLIENT_SIZE` | `10m` | multisite | no | Maximum body size (0 for infinite). |
| `SERVE_FILES` | `yes` | multisite | no | Serve files from the local folder. |
| `ROOT_FOLDER` | | multisite | no | Root folder containing files to serve (/var/www/html/{server_name} if unset). |
| `HTTP2` | `yes` | multisite | no | Support HTTP2 protocol when HTTPS is enabled. |
| `HTTP3` | `yes` | multisite | no | Support HTTP3 protocol when HTTPS is enabled. |
| `HTTP3_ALT_SVC_PORT` | `443` | multisite | no | HTTP3 alternate service port. This value will be used as part of the Alt-Svc header. |
| `LISTEN_HTTP` | `yes` | multisite | no | Respond to (insecure) HTTP requests. |
| `USE_OPEN_FILE_CACHE` | `no` | multisite | no | Enable open file cache feature |
| `OPEN_FILE_CACHE` | `max=1000 inactive=20s` | multisite | no | Open file cache directive |
| `OPEN_FILE_CACHE_ERRORS` | `yes` | multisite | no | Enable open file cache for errors |
| `OPEN_FILE_CACHE_MIN_USES` | `2` | multisite | no | Enable open file cache minimum uses |
| `OPEN_FILE_CACHE_VALID` | `30s` | multisite | no | Open file cache valid time |
| `EXTERNAL_PLUGIN_URLS` | | global | no | List of external plugins URLs (direct download to .zip or .tar file) to download and install (URLs are separated with space). |
| `DENY_HTTP_STATUS` | `403` | global | no | HTTP status code to send when the request is denied (403 or 444). When using 444, BunkerWeb will close the connection. |
| `SEND_ANONYMOUS_REPORT` | `yes` | global | no | Send anonymous report to BunkerWeb maintainers. |
| `USE_MODSECURITY_CRS_PLUGINS` | `yes` | multisite | no | Enable OWASP Core Rule Set plugins. |
| `MODSECURITY_CRS_VERSION` | `4` | multisite | no | Version of the OWASP Core Rule Set to use with ModSecurity (3, 4 or nightly). |
| `MODSECURITY_CRS_PLUGINS` | | multisite | no | List of OWASP CRS plugins (plugin-name[/tag] or URL) to download and install (separated with spaces). (Not compatible with CRS version 3) |
| `USE_MODSECURITY_GLOBAL_CRS` | `no` | global | no | Use ModSecurity CRS in global mode to improve rules loading when you have many services. |
| `MODSECURITY_SEC_AUDIT_ENGINE` | `RelevantOnly` | multisite | no | SecAuditEngine directive of ModSecurity. |
| `MODSECURITY_SEC_RULE_ENGINE` | `On` | multisite | no | SecRuleEngine directive of ModSecurity. |
| `MODSECURITY_SEC_AUDIT_LOG_PARTS` | `ABCFHZ` | multisite | no | SecAuditLogParts directive of ModSecurity. |
| `MODSECURITY_REQ_BODY_NO_FILES_LIMIT` | `131072` | multisite | no | SecRequestBodyNoFilesLimit directive of ModSecurity. |
| `USE_PROMETHEUS_EXPORTER` | `no` | global | no | Enable the Prometheus export. |
| `PROMETHEUS_EXPORTER_IP` | `0.0.0.0` | global | no | Listening IP of the Prometheus exporter. |
| `PROMETHEUS_EXPORTER_PORT` | `9113` | global | no | Listening port of the Prometheus exporter. |
| `PROMETHEUS_EXPORTER_URL` | `/metrics` | global | no | HTTP URL of the Prometheus exporter. |
| `PROMETHEUS_EXPORTER_ALLOW_IP` | `127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16` | global | no | List of IP/networks allowed to contact the Prometheus exporter endpoint. |
| `USE_REAL_IP` | `no` | multisite | no | Retrieve the real IP of client. |
| `USE_PROXY_PROTOCOL` | `no` | global | no | Enable PROXY protocol communication. |
| `REAL_IP_FROM` | `192.168.0.0/16 172.16.0.0/12 10.0.0.0/8` | multisite | no | List of trusted IPs / networks, separated with spaces, where proxied requests come from. |
| `REAL_IP_HEADER` | `X-Forwarded-For` | multisite | no | HTTP header containing the real IP or special value proxy_protocol for PROXY protocol. |
| `REAL_IP_RECURSIVE` | `yes` | multisite | no | Perform a recursive search in the header container IP address. |
| `REAL_IP_FROM_URLS` | | multisite | no | List of URLs containing trusted IPs / networks, separated with spaces, where proxied requests come from. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |
| `USE_REPORTING_SMTP` | `no` | global | no | Enable sending the report via email. |
| `USE_REPORTING_WEBHOOK` | `no` | global | no | Enable sending the report via webhook. |
| `REPORTING_SCHEDULE` | `weekly` | global | no | The frequency at which reports are sent. |
| `REPORTING_WEBHOOK_URLS` | | global | no | List of webhook URLs to receive the report in Markdown (separated by spaces). |
| `REPORTING_SMTP_EMAILS` | | global | no | List of email addresses to receive the report in HTML format (separated by spaces). |
| `REPORTING_SMTP_HOST` | | global | no | The host server used for SMTP sending. |
| `REPORTING_SMTP_PORT` | `465` | global | no | The port used for SMTP. Please note that there are different standards depending on the type of connection (SSL = 465, TLS = 587). |
| `REPORTING_SMTP_FROM_EMAIL` | | global | no | The email address used as the sender. Note that 2FA must be disabled for this email address. |
| `REPORTING_SMTP_FROM_USER` | | global | no | The user authentication value for sending via the from email address. |
| `REPORTING_SMTP_FROM_PASSWORD` | | global | no | The password authentication value for sending via the from email address. |
| `REPORTING_SMTP_SSL` | `SSL` | global | no | Determine whether or not to use a secure connection for SMTP. |
| `REPORTING_SMTP_SUBJECT` | `BunkerWeb Report` | global | no | The subject line of the email. |
| `REVERSE_PROXY_INTERCEPT_ERRORS` | `yes` | multisite | no | Intercept and rewrite errors. |
| `REVERSE_PROXY_CUSTOM_HOST` | | multisite | no | Override Host header sent to upstream server. |
| `REVERSE_PROXY_SSL_SNI` | `no` | multisite | no | Enable or disable sending SNI to upstream server. |
| `REVERSE_PROXY_SSL_SNI_NAME` | | multisite | no | Sets the SNI host to send to upstream server. |
| `REVERSE_PROXY_HOST` | | multisite | yes | Full URL of the proxied resource (proxy_pass). |
| `REVERSE_PROXY_URL` | `/` | multisite | yes | Location URL that will be proxied. |
| `REVERSE_PROXY_WS` | `no` | multisite | yes | Enable websocket on the proxied resource. |
| `REVERSE_PROXY_HEADERS` | | multisite | yes | List of HTTP headers to send to proxied resource separated with semicolons (values for proxy_set_header directive). |
| `REVERSE_PROXY_HEADERS_CLIENT` | | multisite | yes | List of HTTP headers to send to client separated with semicolons (values for add_header directive). |
| `REVERSE_PROXY_BUFFERING` | `yes` | multisite | yes | Enable or disable buffering of responses from proxied resource. |
| `REVERSE_PROXY_KEEPALIVE` | `no` | multisite | yes | Enable or disable keepalive connections with the proxied resource. |
| `REVERSE_PROXY_AUTH_REQUEST` | | multisite | yes | Enable authentication using an external provider (value of auth_request directive). |
| `REVERSE_PROXY_AUTH_REQUEST_SIGNIN_URL` | | multisite | yes | Redirect clients to sign-in URL when using REVERSE_PROXY_AUTH_REQUEST (used when auth_request call returned 401). |
| `REVERSE_PROXY_AUTH_REQUEST_SET` | | multisite | yes | List of variables to set from the authentication provider, separated with semicolons (values of auth_request_set directives). |
| `REVERSE_PROXY_CONNECT_TIMEOUT` | `60s` | multisite | yes | Timeout when connecting to the proxied resource. |
| `REVERSE_PROXY_READ_TIMEOUT` | `60s` | multisite | yes | Timeout when reading from the proxied resource. |
| `REVERSE_PROXY_SEND_TIMEOUT` | `60s` | multisite | yes | Timeout when sending to the proxied resource. |
| `REVERSE_PROXY_INCLUDES` | | multisite | yes | Additional configuration to include in the location block, separated with spaces. |
| `REVERSE_PROXY_PASS_REQUEST_BODY` | `yes` | multisite | yes | Enable or disable passing the request body to the proxied resource. |
| `USE_PROXY_CACHE` | `no` | multisite | no | Enable or disable caching of the proxied resources. |
| `PROXY_CACHE_PATH_LEVELS` | `1:2` | global | no | Hierarchy levels of the cache. |
| `PROXY_CACHE_PATH_ZONE_SIZE` | `10m` | global | no | Maximum size of cached metadata when caching proxied resources. |
| `PROXY_CACHE_PATH_PARAMS` | `max_size=100m` | global | no | Additional parameters to add to the proxy_cache directive. |
| `PROXY_CACHE_METHODS` | `GET HEAD` | multisite | no | HTTP methods that should trigger a cache operation. |
| `PROXY_CACHE_MIN_USES` | `2` | multisite | no | The minimum number of requests before a response is cached. |
| `PROXY_CACHE_KEY` | `$scheme$host$request_uri` | multisite | no | The key used to uniquely identify a cached response. |
| `PROXY_CACHE_VALID` | `200=24h 301=1h 302=24h` | multisite | no | Define the caching time depending on the HTTP status code (list of status=time), separated with spaces. |
| `PROXY_NO_CACHE` | `$http_pragma $http_authorization` | multisite | no | Conditions to disable caching of responses. |
| `PROXY_CACHE_BYPASS` | `0` | multisite | no | Conditions to bypass caching of responses. |
| `REDIRECT_HTTP_TO_HTTPS` | `no` | multisite | no | Redirect all HTTP request to HTTPS. |
| `AUTO_REDIRECT_HTTP_TO_HTTPS` | `yes` | multisite | no | Try to detect if HTTPS is used and activate HTTP to HTTPS redirection if that's the case. |
| `SSL_PROTOCOLS` | `TLSv1.2 TLSv1.3` | multisite | no | The supported version of TLS. We recommend the default value TLSv1.2 TLSv1.3 for compatibility reasons. |
| `SECURITYTXT_URI` | `/.well-known/security.txt` | multisite | no | Indicates the URI where the "security.txt" file will be accessible from. |
| `SECURITYTXT_CONTACT` | | multisite | yes | Indicates a method that researchers should use for reporting security vulnerabilities such as an email address, a phone number, and/or a web page with contact information. (If the value is empty, the security.txt file will not be created as it is a required field) |
| `SECURITYTXT_EXPIRES` | | multisite | no | Indicates the date and time after which the data contained in the "security.txt" file is considered stale and should not be used (If the value is empty, the value will always be the current date and time + 1 year). |
| `SECURITYTXT_ENCRYPTION` | | multisite | yes | Indicates an encryption key that security researchers should use for encrypted communication. |
| `SECURITYTXT_ACKNOWLEDGEMENTS` | | multisite | yes | Indicates a link to a page where security researchers are recognized for their reports. |
| `SECURITYTXT_PREFERRED_LANG` | `en` | multisite | no | Can be used to indicate a set of natural languages that are preferred when submitting security reports. |
| `SECURITYTXT_CANONICAL` | | multisite | yes | Indicates the canonical URIs where the "security.txt" file is located, which is usually something like "https://example.com/.well-known/security.txt". (If the value is empty, the default value will be automatically generated from the site URL + SECURITYTXT_URI) |
| `SECURITYTXT_POLICY` | | multisite | yes | Indicates a link to where the vulnerability disclosure policy is located. |
| `SECURITYTXT_HIRING` | | multisite | yes | Used for linking to the vendor's security-related job positions. |
| `SECURITYTXT_CSAF` | | multisite | yes | A link to the provider-metadata.json of your CSAF (Common Security Advisory Framework) provider. |
| `WHITELIST_IP` | | multisite | no | List of IP/network, separated with spaces, to put into the whitelist. |
| `WHITELIST_RDNS` | `.google.com .googlebot.com .yandex.ru .yandex.net .yandex.com .search.msn.com .baidu.com .baidu.jp .crawl.yahoo.net .fwd.linkedin.com .twitter.com .twttr.com .discord.com` | multisite | no | List of reverse DNS suffixes, separated with spaces, to whitelist. |
| `WHITELIST_RDNS_GLOBAL` | `yes` | multisite | no | Only perform RDNS whitelist checks on global IP addresses. |
| `WHITELIST_ASN` | `32934` | multisite | no | List of ASN numbers, separated with spaces, to whitelist. |
| `WHITELIST_USER_AGENT` | | multisite | no | List of User-Agent (PCRE regex), separated with spaces, to whitelist. |
| `WHITELIST_URI` | | multisite | no | List of URI (PCRE regex), separated with spaces, to whitelist. |
| `WHITELIST_IP_URLS` | | multisite | no | List of URLs, separated with spaces, containing good IP/network to whitelist. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |
| `WHITELIST_RDNS_URLS` | | multisite | no | List of URLs, separated with spaces, containing reverse DNS suffixes to whitelist. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |
| `WHITELIST_ASN_URLS` | | multisite | no | List of URLs, separated with spaces, containing ASN to whitelist. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |
| `WHITELIST_USER_AGENT_URLS` | | multisite | no | List of URLs, separated with spaces, containing good User-Agent to whitelist. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |
| `WHITELIST_URI_URLS` | | multisite | no | List of URLs, separated with spaces, containing bad URI to whitelist. Also supports file:// URLs and and auth basic using http://user:pass@url scheme. |