Nginx a Partir do Diretório Atual
À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.