Você está na página 1de 12

 MENU

Desvendando o Nginx -
Parte 1
29 JULY 2016 on nginx, webserver, http

O Nginx é um servidor web, Proxy reverso, Proxy balanceador


de carga, com um performance muito maior se comparado com
outros servidores WEB como o APACHE. O Nginx (pronuncia-se
"enginex") é um servidor de alta performance, gratuito e open-
source, bem como um servidor proxy para IMAP/POP3.

Escrito em C por Igor Sysoev em 2002, com sua primeira versão


pública liberada em 2004. O Nginx é conhecido por sua
estabilidade, rico conjunto de características/facilidades,
simples con guração e baixo consumo de recursos. Aqui no
LEMAF, por exemplo, usamos tanto Apache, quanto Nginx
(dando preferência ao Nginx).
Instalação
O Nginx roda na plataforma GNU/Linux, no Microsoft
Windows, ou no OsX da Apple. No entanto, esta abordagem será
em GNU/Linux. Se você usa alguma distribuição GNU/Linux
baseada em Debian como por exemplo o Ubuntu, basta digitar o
seguinte comando:

Bash
sudo apt-get install -y nginx

Dica: Ainda que o apt-get seja o gerenciador de pacotes mais


conhecido, é interessante usar o aptitude que é uma evolução do
apt-get. Por outro lado, se você usa alguma distribuição baseada em
Redhat, basta digitar o comando a seguir:

Bash
sudo yum install -y nginx

Dica: Se a distribuição é o Fedora, no lugar do yum, use o dnf. No


caso da distribuição ser diferente das citadas, consulte o site o
https://nginx.org/. Assim que terminar de instalar, será necessário
ativar o daemon do Nginx:

Bash
sudo systemctl enabled nginx.service

Agora inicializaremos o serviço:

Bash
sudo systemctl start nginx.service
Dica: As versões mais atuais do Ubuntu, Fedora ou Debian, já não
rodam o sistema de inicialização de serviços antigos. Isto é, não
rodam mais o SysV init que anteriormente iniciava serviços através
do (/etc/init.d/script). Ao invés, o padrão da maioria das
distribuições é o systemd. Por este motivo agora usa-se o systemctl
(system control) para iniciar os serviços. Em alguns casos ainda é
possível usar o padrão service nginx start que na verdade é
redirecionado para o comando systemctl de todo modo.

A diferença básica entre as distribuições GNU/Linux são


basicamente caminhos, comandos, ciclos de vida ,atualização e
política de segurança. No entanto, ainda sim, é mantido o padrão
denominado LSB - Linux Standart Base.

Entendendo a estrutura do Nginx


O Nginx armazena seus arquivos de con guração dentro do
diretório /etc/nginx por padrão. Este diretório também contém
outras pastas como mostra abaixo:

conf.d/ koi-win naxsi.rules


scgi_params uwsgi_params
fastcgi_params mime.types nginx.conf win-utf
koi-utf naxsi_core.rules proxy_params

Nota: Se você está vindo do Apache, é interessante criar o mesmo


padrão de pastas como o sites-available, e sites-enabled.

Em distribuições baseadas em Redhat como o Fedora/Centos, o


nginx vem crú, sem esta con guração ao estilo Apache. Neste
caso, será necessário criar tais pastas (diferentemente de
distribuições baseadas em Debian que já vem com tais
con gurações por padrão). Estes diretórios são usados para
de nir con gurações para as suas aplicações. Os arquivos são
geralmente criados no diretório sites-available, e, em seguida,
simbolicamente ligados ao diretório sites-enabled.

Con guração básica do Nginx


Partindo do Fedora e seguindo o padrão Apache de diretórios
(opcional), então vamos criar os diretórios:

Bash
cd /etc/nginx/
sudo mkdir sites-available sites-enabled

Atenção: Como descrito a cima, a criação de ambas as pastas só será


necessário em distribuições baseadas em Redhat. Agora basta editar
o nginx.conf e incluir o sites-enabled, e o conf.d como segue:

Bash
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

Atenção: Geralmente se espera que o link simbólico no diretório


sites-enabled sejam criados automaticamente. No entanto, nem
sempre isto ocorre. Portanto, é interessante veri car se os links
foram criados e cria-los manualmente caso seja necessário. Em
outro exemplo, podemos habilitar as opções de compactação de
arquivos bastando apenas adicionar as seguintes linhas no
nginx.conf:
Bash
gzip on;
gzip_disable "msie6";

Nota: O parâmetro gzip_disable "msie6"; a cima, visa desativar o


tipo de compactação Gzip para o navegador Internet Explorer 6 pois,
este navegador não aceita este tipo de compactação de arquivos.

O diretório conf.d pode ser usado para a con guração do site


também. Cada arquivo dentro deste diretório termina com .conf
e é lido na con guração quando Nginx é iniciado garantindo
assim, que cada arquivo de na sintaxe válida de con guração do
Nginx. Na maioria dos casos, outros arquivos dentro do diretório
/etc/nginx contêm detalhes de con guração de processos

especí cos ou componentes opcionais. Por m, o arquivo


nginx.conf estará assim:

Bash
user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
worker_connections 768;
# multi_accept on;
}

http {

##
# Basic Settings
##

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;

# server_names_hash_bucket_size 64;
# server_name_in_redirect off;

include /etc/nginx/mime.types;
default_type application/octet-stream;

##
# SSL Settings
##

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POOD


ssl_prefer_server_ciphers on;

##
# Logging Settings
##

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

##
# Gzip Settings
##

gzip on;
gzip_disable "msie6";

# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/ja

##
# Virtual Host Configs
##

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Você pode estar se perguntando: Mas que diabos são estes
parâmetros do nginx.conf padrão? Vamos lá:

O user www-data; signi ca que o Nginx irá executar como


usuário www-data. Isso é útil se você estiver fazendo a
transição do Apache, onde o usuário é padrão é o www-data.
Assim, você não terá que alterar a propriedade de todos os
arquivos ou diretórios existentes.

O parâmetro worker_processes 4; é a espinha dorsal para o


processamento do Nginx. Esta diretiva é responsável por
deixar o nosso servidor virtual ciênte de que muitos
processos são gastos de uma vez.

O pid /run/nginx.pid de ne um arquivo que irá armazenar o


ID de processo do processo principal.

A diretiva events fornece a con guração em que as diretivas


que afetam o processamento de conexão são especi cados.
Neste caso, o worker_connections 768 de ne o número
máximo de conexões simultâneas que podem ser abertas por
um processo de trabalho (768 por padrão).

Nota: Perceba que ainda dentro de events temos a diretiva


multi_accept on; que por padrão vem comentado. Isto é, um

processo vai aceitar uma nova conexão de cada vez. Caso


contrário, um processo iria aceitar todas as novas conexões ao
mesmo tempo.

Obs: A diretiva http assim como a diretiva events , funcionam


como se fossem funções que encapsulam diretivas dentro delas. A
diretiva http contém as con gurações do protocolo http . Dentro do
http temos alguns parâmetros. Como mostra a seguir:

A diretiva sendfile on; em modo on , isto é, ativo, não


bloqueia a saída e entrada do disco informando que os dados
não estão na memória. Em seguida, o nginx inicia uma carga
de dados assíncronos através da leitura de um byte.

A diretiva tcp_nopush on; só é usada quando o sendfile


também está ativo. Pois, esta diretiva é reponsável por enviar
o cabeçalho de resposta de pacotes para o sistema
operacional.

A diretiva tcp_nodelay on; só pode estar ativa quando um há


transferência para o estado keep-alive.

A diretiva keepalive_timeout de ne um limite de tempo


durante o qual uma conexão de cliente keep-alive vai car
aberta no servidor. O valor zero desativa conexões keep-alive
do cliente.

A diretiva types_hash_max_size de ne o tamanho máximo


das hash tables.No caso, o padrão é 2048.

A diretiva server_tokens off; que está comentada por


padrão, serve para emitir mensagens de erro ao servidor.
Esta diretiva é extremamente importante quando não se
sabe bem a causa de uma suposta falha envolvendo o nginx.

A diretiva server_names_hash_bucket_size; que também está


comentada, de ne o tamanho de buckets para as tabelas de
nome de hash para servidores. O valor padrão depende do
tamanho do cache do processador.
A diretiva server_name_in_redirect off que também está
comentada por padrão, é responsável por ativar ou desativar
o uso do nome do servidor principal, especi cado pela
diretiva server_name, em redirecionamentos emitidos pelo
nginx.

A diretiva include /etc/nginx/mime.types de ne o tipo MIME


padrão de uma resposta. Isto é, o mapeamento das extensões
de nome de arquivo para tipos de MIME pode ser de nida
com a diretiva types que corresponde a uma extensa lista de
formados e extensões permitidas no nginx.

A diretiva default_type application/octet-stream; é uma


declaração direta de mime type que não está declarado
dentro do arquivo mime.types ativando a aplicação de stream
de vídeo octet-stream.

A diretiva ssl_protocols por padrão cria compatibilidade aos


formatos ssl TLS versão 1, 1.1, 1.2 não permitindo a iteração
com o formato SLLv3. O formato SSLv3 ainda não está
su cientemente maduro e por isto é um padrão inseguro.

Temos também as diretivas para geração de logs em seus


devidos caminhos, no caso a diretiva access_log e error_log
que são gerados por padrão em /var/log/nginx nos arquivos
access.log e error.log .

Temos as diretivas para habilitar formatos de compactação


através das con gurações do formato gzip, da diretiva
gzip_disable "msie6" que desabilita a compatibilidade com

navegadores Internet Explorer 6 para evitar problemas, e


outras con gurações pertinentes para este tipo de
compabilidade além de mime.types do formato.
Por m, em Virtual Host Con gs, é onde adicionamos os
caminhos dos arquivos de con guração contidos na pasta
sites-available, conf.d ou qualquer outra pasta que julgue
pertinente.

Pronto. Já temos a con guração básica funcional do Nginx. Na


parte 2 deste artigo, irei mostrar em detalhes os casos de uso
para o Nginx o que envolve proxy_reverso, redirecionamento de
endereços, proxy balanceador de carga, bloqueio e liberação de
faixas de ip, cache, webserver, streaming, entre outras
funcionalidades.

Sugestão para estudo:


Documentação O cial do Nginx

Apache vs Nginx: Practical Considerations


4 Comments LEMAF Blog.ti 
1 Login

 Recommend 1 t Tweet f Share Sort by Best

Join the discussion…

LOG IN WITH
OR SIGN UP WITH DISQUS ?

Name

Daniel Freire • a year ago


Ótimo artigo.
△ ▽ • Reply • Share ›

Evandro Xavier • 2 years ago


porque começou aparecer isso para mim na pagina do meu mercadolivre não consigo
acessar as perguntas que aparece essa mensagem Se você vir esta página, o servidor
web nginx está instalado e funcionando com sucesso. É necessária mais
configuração.

Para obter documentação e suporte on-line, consulte o nginx.org .


O suporte comercial está disponível no nginx.com .

Obrigado por usar o nginx.

se algum puder me ajudar eu agradeço email ; evandrofilho2013@bol.com.br


△ ▽ • Reply • Share ›

Elias Junior • 2 years ago


Excelente série de artigos!
△ ▽ • Reply • Share ›

Ronaldo Silva • 3 years ago


Teste!
△ ▽ • Reply • Share ›

ALSO ON LEMAF BLOG.TI

Gitlab v.9.1.2 Features Docker um novo conceito de


1 comment • 2 years ago virtualização - Parte 1
Renzzo Macari de Giz (DeGiz) — E aí 2 comments • 3 years ago
rapaz, tá usando que email? Como faço Eduardo Ramos — Ótimo artigo.
para conversar contigo..desapareceu...me Parabéns!

Oportunidade: Analista de SQL Injection, o que é e como


Geoprocessamento evitar essa falha de segurança
1 comment • 2 years ago 1 comment • 2 years ago
Nondas Silva — O cronograma seguirá Lucas Arriel — Exemplo de injection ,
as datas pré-estabelecidas ? coloque um traço " ' " e vc terá um erro de
lh // ib h //

Vitor Lobo Ramos Share this post


Read more posts by this author.   
http://lobocode.github.io

READ THIS NEXT YOU MIGHT ENJOY

Bolsa de DOCUMENTAND
Desenvolviment O SUAS API´S
o Técnico - COM SWAGGER
LCD/LEMAF Atualmente é bem comum que
empresas utilizem APIs REST
Local de trabalho: Laboratório
para a integração de aplicações,
de Computação Distribuída
seja para consumir serviços de…
(LCD) / DCC Número de bolsas:
2 Titulo da vaga:
Desenvolvimento técnico LCD-
LEMAF…

LEMAF Blog.ti © 2019 Proudly published with Ghost

Você também pode gostar