aboutsummaryrefslogtreecommitdiff
path: root/.local/share/bin/nginx-dev
diff options
context:
space:
mode:
Diffstat (limited to '.local/share/bin/nginx-dev')
-rwxr-xr-x.local/share/bin/nginx-dev84
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"
+