nginx em conjunto com Apache - Instalação e configuração no Debian e derivados

O Apache é uma ferramenta muito completa para conteúdo dinâmico e o nginx possui uma performance incrível. Contudo, ambos possuem desvantagens: o Apache consome uma grande quantidade de memória e o nginx não é bom o bastante, quando se trata de conteúdos dinâmicos.

[ Hits: 38.442 ]

Por: Bruno em 31/01/2014


Instalação e configuração



nginx: instalação

Para iniciar, precisamos instalar e configurar o nginx para servir as páginas estáticas do seu site.

Comece instalando utilizando o apt-get:

sudo apt-get install nginx

Após a instalação, você poderá seguir com a configuração do host virtual.
Será necessário realizar algumas configurações básicas.

nginx: configuração

Abra o arquivo de configuração do nginx:

sudo nano /etc/nginx/sites-available/example

A seguinte configuração pode ser usada no nginx para servir páginas estáticas. A configuração é bem parecida com a configuração padrão e os detalhes podem ser vistos na própria configuração, logo abaixo:

server {
       listen   80;

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

       server_name example.com;

       location / {
       try_files $uri $uri/ /index.php;
       }

       location ~ \.php$ {

       proxy_set_header X-Real-IP  $remote_addr;
       proxy_set_header X-Forwarded-For $remote_addr;
       proxy_set_header Host $host;
       proxy_pass http://127.0.0.1:8080;

       }

       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;
  • index.php foi definido como página de entrada;
  • A configuração try_files define que todas as requisições serão tratadas pelo nginx, caso não seja possível, a requisição será redirecionada para o proxy (Apache);
  • proxy_pass → Define o endereço do servidor proxy;
  • location ~ /\.ht { → Bloqueia o acesso direto ao .htaccess.

Esta configuração garante que todo arquivo com a extensão .php, será redirecionado para o Apache, que irá rodar na porta 8080.

Ativando o virtual host:

sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/example

Adicionalmente, remova a configuração padrão do nginx:

sudo rm /etc/nginx/sites-enabled/default

Apache: Instalação

Com os procedimentos já finalizados com nginx, é hora de instalar o Apache para processamento do conteúdo dinâmico:

sudo apt-get install apache2

Como ainda não iniciamos o nginx, o Apache estará rodando na porta 80.

Apache: configuração

Nós precisamos configurar o Apache para processar todas as páginas dinâmicas na porta 8080. Primeiro, abra os arquivos de configuração do Apache e altere a porta de escuta padrão:

sudo nano /etc/apache2/ports.conf

Procure e altere as linhas seguintes para manter o Apache rodando na porta 8080 e para restringir o acesso ao localhost (uma vez que todas as requisições serão feitas por meio do nginx localmente):

NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080

Salve o arquivo e saia.

Copie o arquivo de configuração do virtual host padrão do Apache, para realizar as configurações sobre um template:

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/example
$ sudo nano /etc/apache2/sites-available/example


A principal questão agora, é determinar que o virtual host do Apache irá rodar na porta 8080 (uma vez que o nginx já está rodando na porta 80). A linha seguinte cuida disso:


Tenha certeza que o Document Root está correto. Salve e saia do arquivo para ativar o virtual host:

sudo a2ensite example

Antes de testar o seu ambiente, precisamos configurar o PHP em seu Apache.

Instale, utilizando o seguinte comando:

sudo apt-get install php5

Reinicie os serviços, para que as configurações façam efeito:

sudo service apache2 restart
$ sudo service nginx restart


Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Instalação e configuração
   3. Resultado
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Instalando o VMWare Server no Ubuntu 7.04 (e/ou similares)

Como instalar o KDE 5 no Slackware Current

Android - Emulando, Instalando e Removendo Aplicativos APK

Compartilhando o acesso à Internet para a rede usando modem DSL 500B

Configuração do Shaperd no Debian Lenny

  
Comentários
[1] Comentário enviado por silent-man em 04/02/2014 - 18:11h

Simples, porém interessante!

Parabéns!

[2] Comentário enviado por ranzes em 10/02/2014 - 07:35h

De onde o Apache foi lançado em 2006???
Reveja seus textos o Apache já existe desde 1995.

[3] Comentário enviado por wiljunior em 12/02/2014 - 17:35h

Muito bom, gostei.

OBS: Na linha 17 do arquivo example do nginx, tem a letra "A" após os ";" e por isso o nginx não sobe.

proxy_set_header X-Forwarded-For $remote_addr;A

correto

proxy_set_header X-Forwarded-For $remote_addr;

[4] Comentário enviado por thiago_dias em 18/02/2014 - 11:45h

Estou começando a ler sobre Nginx e todos materiais que estou vendo, fala que ele trabalha muito bem com conteúdos dinâmicos. E em muitos testes de comparação, ele se mostrou superior ao Apache.

[5] Comentário enviado por marcelloinfoweb em 25/02/2014 - 22:23h


[4] Comentário enviado por thiago_dias em 18/02/2014 - 11:45h:

Estou começando a ler sobre Nginx e todos materiais que estou vendo, fala que ele trabalha muito bem com conteúdos dinâmicos. E em muitos testes de comparação, ele se mostrou superior ao Apache.


Isso é pura verdade! O cara que digitou o post esta um pouco desenformado...

[6] Comentário enviado por Lapis em 18/08/2015 - 23:30h


E como instalo o php no apache2?
Funciona perfeitamente em arquivos que estão na /var/www/index.php, mas em outros arquivos como /var/www/phpmyadmin/index.php não funciona.

[7] Comentário enviado por nikaway em 21/09/2015 - 18:09h

Oi, eu posso instalar o nginx e o apache ao mesmo tempo no mesmo sistema, certo? ok...
Nesse caso, ouvi dizer que o nginx não suporta o arquivo .htaccess, e tenho muitas configurações no .htaccess que não gostaria de abrir mão rsrs... Eu poderia usar o nginx para dar mais performance ao meu servidor e usar o Apache para páginas dinâmicas e também detectar as regras do .htaccess? Posso fazer isso? Ou será que daria confusão?
E como seria feito? Seria bom um vídeo-tutorial ensinando fazer todo esse procedimento.


[8] Comentário enviado por CharlesLocatelli em 24/09/2016 - 21:38h

Olá,
estou com o seguinte problema no local host:
403 Forbidden
nginx/1.6.2

uso LinuxMint Debian edition.
Grato,


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts