diff options
Diffstat (limited to '.local/share/bin/nginx-dev')
-rwxr-xr-x | .local/share/bin/nginx-dev | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/.local/share/bin/nginx-dev b/.local/share/bin/nginx-dev new file mode 100755 index 0000000..10987fd --- /dev/null +++ b/.local/share/bin/nginx-dev @@ -0,0 +1,84 @@ +#!/bin/sh +folder="$PWD" +port=8080 +try_files='/$uri /$uri.html /$uri/index.html =404' +access_log='/dev/stdout' +cache_control=' + add_header Last-Modified $date_gmt; + add_header Cache-Control "private no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0"; + if_modified_since off; + expires off; + etag off; +' + +usage() { + cat << EOF +usage: $(basename "$0") [options] [folder] + +options: + -p PORT host server on port PORT (default $port) + -t STR set try_files pattern to STR (default '$try_files') + -C enable server cache (disabled by default) + -v verbose mode (prints config before starting server) + -q quiet mode (disable access_log) + -x automatically open a browser + -h show this help +EOF +exit $1 +} + +ARGC=0 +while getopts hvp:Ct:qx OPT; do + [ $OPTIND -gt $ARGC ] && ARGC=$OPTIND + case $OPT in + h) usage 0 ;; + p) port="$OPTARG" ;; + t) try_files="$OPTARG" ;; + v) print_config=1 ;; + C) cache_control="" ;; + q) access_log="/dev/null" ;; + x) open_browser=1 ;; + \?|*) usage 1 ;; + esac +done +shift $(( $OPTIND - 1 )) + +[ $# -ge 1 ] && folder="$(readlink -f "$1")" + +config="$(mktemp)" +pidfile="$(mktemp)" +cat << EOF > "$config" +worker_processes 1; +daemon off; +pid $pidfile; + +events { + worker_connections 1024; +} + +http { + types_hash_max_size 4096; + include /etc/nginx/mime.types; + default_type application/octet-stream; + + $cache_control + + access_log $access_log; + + server { + listen $port; + listen [::]:$port; + + root $folder; + + location / { + try_files $try_files; + } + } +} +EOF +[ $print_config ] && cat "$config" +[ $open_browser ] && (xdg-open "http://localhost:$port" 1> /dev/null 2> /dev/null &) +nginx -c "$config" +rm -f "$config" "$pidfile" + |