Às vezes é muito útil executar um HTTP Server tendo como raiz o diretório atual.

Isso pode ser feito com o amplamente conhecido python -m SimpleHTTPServer 8000 do Python 2. Funciona e já está instalado na maioria dos sistemas.

Mas eu quero fazer isso usando Nginx. Então eu criei um shell script chamado nginxhere para simplificar esse processo. Depois de instalar o Nginx no seu sistema, basta criar um arquivo com esse nome em algum diretório que esteja no seu path (exemplo: /usr/local/bin), permitindo assim execução em qualquer diretório. O conteúdo do arquivo é esse:

#!/bin/bash

trap 'rm -rf -- ${nginx_conf}' EXIT

nginx_conf=$(mktemp)
nginx_listen_port=${1:-8080}

cat <<END > ${nginx_conf}
  daemon off;
  error_log /dev/stderr error;

  events {
      worker_connections 256;
  }

  http {
      $(curl -Ls 'https://raw.githubusercontent.com/nginx/nginx/master/conf/mime.types')

      access_log /dev/stdout combined;
      autoindex on;

      server {
          listen ${nginx_listen_port};

          location / {
              root .;
          }
      }
  }
END

nginx -p $(pwd) -c ${nginx_conf}

Basicamente eu crio um arquivo temporário com uma configuração simples atendendo na porta 8080 e escrevendo os logs na saída padrão. É possível alterar a porta passando um valor válido como parâmetro do script. No final o Nginx é executado mostrando os logs no próprio terminal. Para finalizar basta fazer Ctrl + c.

Assim você pode executar simplesmente:

$ nginxhere

E já pode fazer requisições para a porta 8080 tendo como raiz o diretório que você executou o comando. Se quiser alterar a porta:

$ nginxhere 8000

E agora poderá receber requisições na porta 8000.

Isso simplifica muito o processo de executar um Nginx localmente.