Diretiva Location no Nginx
A diretiva location, parte do módulo NginxHttpCoreModule, é usada para configurar como o Nginx processa URIs solicitados. A URI pode ser uma string literal ou uma expressão regular, mas regex exige um prefixo específico.
Sintaxe da Diretiva Location
location [= | ~ | ~* | ^~] /uri/ { ... }
=: Correspondência exata. Intrerompe a busca e processa imediatamente.~: Correspodnência com distinção entre maiúsculas e minúsculas (permite regex).~*: Correspondência sem distinção entre maiúsculas e minúsculas (permite regex).!~e!~*: Negação com e sem distinção de caso.^~: Se aplicado a uma string, impede a avaliação de regex se houver correspondência.
Ocultando Informações do Servidor
Para melhorar a segurança, é possível ocultar a versão do Nginx nos cabeçalhos de resposta:
server_tokens off;
Instalação do Nginx com Módulos Essenciais
O Nginx é um servidor web de alto desempenho, proxy reverso e servidro de e-mail. Para uma instalação completa, dependências como PCRE (para regex) e zlib (para compressão) são necessárias.
Instalando Dependências
# Instalar PCRE
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.21.tar.gz
tar -zxvf pcre-8.21.tar.gz
cd pcre-8.21
./configure && make && make install
# Instalar zlib
wget http://zlib.net/zlib-1.2.8.tar.gz
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure && make && make install
# Instalar OpenSSL
wget http://www.openssl.org/source/openssl-1.0.1c.tar.gz
tar -zxvf openssl-1.0.1c.tar.gz
./config && make && make install
Compilando o Nginx
wget http://nginx.org/download/nginx-1.7.2.tar.gz
tar -zxvf nginx-1.7.2.tar.gz
cd nginx-1.7.2
./configure \
--sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-http_ssl_module \
--with-pcre=../pcre-8.21 \
--with-zlib=../zlib-1.2.8
make && make install
Parâmetros de Configuração Comuns
--prefix: Diretório de instalação.--sbin-path: Caminho do binário do Nginx.--conf-path: Arquivo de configuração principal.--with-http_ssl_module: Habilita suporte a HTTPS.--with-pcre: Define o caminho do código-fonte do PCRE.
Monitoramento e Controle do Nginx
Para verificar o status do Nginx, use a diretiva stub_status em um bloco location:
location /NginxStatus {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
Isso retorna informações como conexões ativas, requisições tratadas e estados de leitura/escrita.
Comandos Básicos de Gerenciamento
# Iniciar
/usr/local/nginx/sbin/nginx
# Recarregar configuração
/usr/local/nginx/sbin/nginx -s reload
# Parar
/usr/local/nginx/sbin/nginx -s stop
Exemplo de Configuração
user www-data;
worker_processes auto;
pid /var/run/nginx.pid;
events {
use epoll;
worker_connections 10240;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
gzip on;
server {
listen 80;
server_name exemplo.com;
location / {
root /var/www/html;
index index.html;
}
location /app {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
}
}
upstream backend_servers {
server 192.168.1.10:8080;
server 192.168.1.11:8080;
}
}
Configurações de Desempenho e Segurança
worker_processes: Define o número de processos de trabalho.worker_connections: Limite de conexões por processo.gzip: Habilita compressão de resposta.server_tokens off: Oculta a versão do Nginx.