Compile and install NGINX from source with optional features, modules and patches.
- Debian 11 and later
- Ubuntu 20.04 and later
The script might work on ARM-based architectures, but it's only being regularly tested against x86_64 with GitHub Actions.
- Latest mainline or stable version, from source
- Optional modules and patches
- Custom nginx.conf (default does not work)
- Init script for systemd (not provided by default)
- Logrotate conf (not provided by default)
- Block Nginx installation from APT using pinning, to prevent conflicts
- LibreSSL from source (CHACHA20, ALPN for HTTP/2, X25519, P-521)
- OpenSSL from source (TLS 1.3, CHACHA20, ALPN for HTTP/2, X25519, P-521)
- Cloudflare's patch for HTTP/3 with Quiche and BoringSSL.
- Cloudflare's TLS Dynamic Record Resizing patch maintained by nginx-modules.
- Cloudflare's HTTP/2 HPACK encoding patch (original patch, fixed patch)
- ngx_pagespeed: Google performance module
- ngx_brotli: Brotli compression algorithm
- ngx_headers_more: Custom HTTP headers
- ngx_http_geoip2_module with libmaxminddb and GeoLite2 databases
⚠️ Requires license key - ngx_cache_purge: Purge content from FastCGI, proxy, SCGI and uWSGI caches
- ngx-fancyindex : fancy file listings
- nginx-dav-ext-module: WebDAV PROPFIND, OPTIONS, LOCK, UNLOCK support)
- nginx-module-vts: Nginx virtual host traffic status module (install instructions)
- ModSecurity-nginx: connector for the ModSecurity open-source web application firewall (WAF)
- testcookie-nginx-module: simple robot mitigation module using cookie based challenge/response (example config)
- lua-nginx-module: extend NGINX with Lua. Using luajit2 (OpenResty's maintained branch of LuaJIT) and ngx_devel_kit (Nginx Development Kit (NDK))
- nginx_substitutions_filter: regular expression and fixed string substitutions for nginx
- RTMP module (NGINX-based Media Streaming Server)
- nginx-ultimate-bad-bot-blocker: Bad Bot and User-Agent Blocker, Spam Referrer Blocker, Anti DDOS, Bad IP Blocker and WordPress Theme Detector Blocker
- redis2-nginx-module : Nginx upstream module for the Redis 2.0 protocol
- ngx_http_redis : The nginx HTTP redis module for caching with redis
- srcache-nginx-module : Transparent subrequest-based caching layout for arbitrary nginx locations
- set-misc-nginx-module : Various set_xxx directives added to nginx's rewrite module (md5/sha1, sql/json quoting, and many more)
- echo-nginx-module : Brings "echo", "sleep", "time", "exec" and more shell-style goodies to Nginx config file.
- Required to set up Redis with conditional purging
- Install Redis with
apt install redis-{tools,server}
Just download and execute the script :
wget https://raw.githubusercontent.com/maximemichaud/nginx-autoinstall/master/nginx-autoinstall.sh
chmod +x nginx-autoinstall.sh
./nginx-autoinstall.sh
You will be able to:
- Install NGINX
- Update NGINX (It will install it again and overwrite current files and/or modules.)
- Uninstall NGINX with optional cleanup
- Self-update the script
Just follow the question!
You can check configuration examples for the custom modules.
You can run the script without the prompts with the option HEADLESS
set to y
. This allows for automated install and scripting. This is what is used to test the script with GitHub Actions.
HEADLESS=y ./nginx-autoinstall.sh
To install Nginx mainline with Brotli:
HEADLESS=y \
NGINX_VER=MAINLINE \
BROTLI=y \
./nginx-autoinstall.sh
To install with Geoip:
HEADLESS=y \
GEOIP=y \
GEOIP2_ACCOUNT_ID=YOUR_ACCOUNT_ID_HERE \
GEOIP2_LICENSE_KEY=YOUR_LICENSE_KEY_HERE \
./nginx-autoinstall.sh
To uninstall Nginx and remove the logs and configuration files:
HEADLESS=y \
OPTION=2 \
RM_CONF=y \
RM_LOGS=y \
./nginx-autoinstall.sh
All the default variables are set at the beginning of the script.
GPL v3.0