#!/bin/bash # For building custom nginx with extra modules including brotli, real-ip, Quiche, and percent decode stuff git clone --recursive https://github.com/openresty/set-misc-nginx-module.git git clone --recursive https://github.com/cloudflare/quiche.git git clone --recursive https://github.com/openresty/headers-more-nginx-module.git git clone --recursive https://github.com/vision5/ngx_devel_kit.git git clone --recursive https://github.com/google/ngx_brotli.git wget 'https://nginx.org/download/nginx-1.18.0.tar.gz' tar -xzvf nginx-1.18.0.tar.gz cd nginx-1.18.0/ apt install -y libssl-dev libpcre3 libpcre3-dev zlib1g zlib1g-dev ./configure \ --build="quiche-$(git --git-dir=../quiche/.git rev-parse --short HEAD)" \ --with-compat \ --with-http_realip_module \ --with-http_v2_module \ --with-http_v3_module \ --with-openssl=../quiche/quiche/deps/boringssl \ --with-quiche=../quiche \ --with-http_stub_status_module \ --with-http_ssl_module \ --with-http_auth_request_module \ --add-module=/root/ngx_brotli \ --add-module=/root/ngx_devel_kit \ --add-module=/root/set-misc-nginx-module \ --add-module=/root/headers-more-nginx-module \ --prefix=/usr \ --pid-path=/run/nginx.pid \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --conf-path=/etc/nginx/nginx.conf make -j12 make install # Set /lib/systemd/system/nginx.service to: # [Unit] # Description=The NGINX HTTP and reverse proxy server # After=syslog.target network-online.target remote-fs.target nss-lookup.target # Wants=network-online.target # [Service] # Type=forking # PIDFile=/run/nginx.pid # ExecStartPre=/usr/sbin/nginx -t # ExecStart=/usr/sbin/nginx # ExecReload=/usr/sbin/nginx -s reload # ExecStop=/bin/kill -s QUIT $MAINPID # PrivateTmp=true # [Install] # WantedBy=multi-user.target systemctl restart nginx nginx -s reload