Instalação e Configuração Nginx

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.

Nginx (pronunciado “engine x”) é um servidor e proxy reverso HTTP de alta performance, gratuito e open-source, bem como um servidor proxy para IMAP/POP3. Escrito por Igor Sysoev em 2002, com sua primeira versão pública liberada em 2004, Nginx agora hospeda 6% de todos os domínios do mundo. Mesmo ainda em beta, o Nginx é conhecido por sua estabilidade, rico conjunto de características/facilidades, simples configuração e baixo consumo de recursos.

Por que Nginx?

Nginx é um servidor e proxy web de alta performance. Tem muitas características, mas não é pra qualquer um. As pessoas geralmente usam Nginx:

Como um substituto para o Apache, que trata muitas conexões concorrentes graciosamente: Nginx é especialmente popular entre empresas de hospedagem web. 50,000 conexões simultâneas foram relatadas, graças ao uso de epoll e kqueue pelo Nginx.

Como um servidor proxy de balanceamento de carga: Nginx é um popular front-end para aplicações Rails e PHP , seja via FastCGI ou HTTP . Escrito em C, consome cerca de 1/4 de CPU que o Perlbal usa.

Como proxy de servidor de e-mail: mais uma aplicação de nicho, mas fastmail.fm informa grande sucesso.

Como um servidor com simples processo de instalação, um arquivo de configuração limpo e poucos bugs : Nginx é fácil de colocar para funcionar e quase nunca precisa ser reiniciado. Você pode até mesmo atualizar o binário com downtime zero .

Instalação do Nginx

Para instalar usamos o comando apt ou yum, como um processo simples de instalação de pacotes através do repositório.

É possível baixar ainda o código fonte e fazer a instalação a partir destes.

# apt-get install nginx

A configuração é feito no arquivo /etc/nginx/sites-avaliabe/example

server {
listen   80;

 

root /var/www/;
index index.php index.html index.htm;

server_name example.com;

location ~ /\.ht {
deny all;
}
}

As seguintes características foram definidas nesta configuração:

  • Definição do diretório base (root) para a aplicação WEB em /var/WWW.
  • Índex.html foi definido como página de entrada seguido de índex.htm.
  • O parâmetro location informa onde vão ficar os arquivos de determinado url, por exemplo:

location /images/ {

root/data;

}

  • Listen informa qual porta será ouvida, ou seja qual porta irá trabalhar.

Exemplo Completo:

user       www www;  ## Default: nobody
worker_processes  5;  ## Default: 1
error_log  logs/error.log;
pid        logs/nginx.pid;
worker_rlimit_nofile 8192;

 

http {
include    conf/mime.types;
include    /etc/nginx/proxy.conf;
include    /etc/nginx/fastcgi.conf;
index    index.html index.htm index.php;

default_type application/octet-stream;
log_format   main ‘$remote_addr – $remote_user [$time_local]  $status ‘
‘”$request” $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;
access_log   logs/access.log  main;

# serve static files
location /  {
root    /var/www/;
}

Proxy Reverso

Para utilizarmos um Proxy reverso, ou seja, algumas configurações vão ser enviadas para outro servidor, devemos nos ater as portas.

Já que o Nginx será o servidor principal, o nosso apache será o segundo servidor, ou seja, o servidor que irá responder pelas informações que forem solicitadas ao Nginx, quando for caso. Um exemplo clássico é para quando houver páginas dinâmicas que dever ser entregues pelo apache, o Nginx encaminha para o servidor Apache.

Vamos utilizar um include para o arquivo de configuração do Proxy, como abaixo:

 include   /etc/nginx/proxy.conf;

E também colocar uma nova location :

location / {      

 

     proxy_pass     http://127.0.0.1:1234;     

  }

Nesta location estamos informando qual o endereço do servidor Apache e que porta irá buscar. Lembre-se de alterar a porta do apache.

Já no arquivo /etc/nginx/proxy.conf, coloque os seguinte itens :

proxy_redirect          off;
proxy_set_header        Host            $host;
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffers           32 4k;

proxy_redirects               Esta diretiva configura o texto, que deverá ser alterado no cabeçalho de resposta de Location e Refresh no servidor Proxy.

  • Proxy_set_header         Esta diretiva permite redefinir e adicionar linha aos cabeçalhos que serão transferidas do Proxy Server.
  • cliente_max_body_size                              Especifica tamanho Maximo do corpo de requisições de clientes aceita, é indicado como Content-Length no header.
  • client_body_buffer_size             Está diretiva especifica o tamanho do buffer do cliente.
  • Proxy_connect_timeout             Define um limite de tempo para estabelecer uma conexão com um servidor proxy. Deve notar-se que este tempo de espera não pode normalmente ultrapassar 75 segundos.
  • Proxy_send_timeout                   Define um tempo limite para a transmissão de um pedido para o servidor proxy. O tempo limite é definido apenas entre duas operações de gravação sucessivas, e não para a transmissão de todo o pedido. Se o servidor proxy não recebe qualquer coisa dentro deste tempo, a conexão é fechada.
  • Proxy_read_timeout                    Define um limite de tempo para a leitura de uma resposta do servidor de proxy. O tempo limite é definido apenas entre duas operações sucessivas de leitura, e não para a transmissão de toda a resposta. Se o servidor proxy não transmite nada neste momento, a conexão é fechada.
  • Proxy_buffers                                 Define o número e tamanho dos buffers utilizados para a leitura de uma resposta do servidor de proxy, para uma única ligação. Por padrão, o tamanho do buffer é igual a uma página de memória. Isto esta entre 4K ou 8K, dependendo de uma plataforma.

Referências:

http://klauslaube.com.br/2011/12/19/nginx-poderoso-rapido-facil.html

http://www.devmedia.com.br/usando-nginx-como-proxy-reverso-e-diminuindo-o-consumo-do-servidor/21461

http://www.erikaheidi.com/blog/nginx-php5-fpm-instalacao-passo-a-passo

http://manifesto.blog.br/2.0/Linux/php5-nginx-fastcgi-debin

https://www.linode.com/docs/websites/nginx/websites-with-nginx-on-debian-7-wheezy

http://www.vivaolinux.com.br/artigo/nginx-em-conjunto-com-Apache-Instalacao-e-configuracao-no-Debian-e-derivados?pagina=2

 

Fonte: http://stato.blog.br/wordpress/instalacao-e-configuracao-nginx/

.