Para configurar o Nginx como um servidor web e como um proxy reverso para o Apache em um servidor Ubuntu 18.04, é necessário seguir alguns passos. O Nginx atuará como um intermediário entre os clientes que acessam o servidor e o Apache, gerenciando as solicitações HTTP e repassando-as para o Apache quando necessário. Aqui está um guia passo a passo:
-
Instalar o Nginx e o Apache:
Primeiro, você precisa garantir que tanto o Nginx quanto o Apache estejam instalados em seu servidor Ubuntu 18.04. Você pode instalá-los através do gerenciador de pacotes APT com os seguintes comandos:sqlsudo apt update sudo apt install nginx apache2 -
Configurar o Apache:
Após a instalação, é necessário configurar o Apache para ouvir em uma porta diferente da padrão (80), para que o Nginx possa usar a porta 80. Você pode fazer isso editando o arquivo de configuração do Apache:bashsudo nano /etc/apache2/ports.confE altere a linha que contém
Listen 80para uma porta diferente, comoListen 8080. Salve e feche o arquivo. -
Configurar os sites no Apache:
Se você já tem sites configurados no Apache, precisa ajustar as configurações para ouvir na porta que você especificou anteriormente (por exemplo, 8080). Edite os arquivos de configuração do Apache em/etc/apache2/sites-available/e altere as diretivasVirtualHostpara refletir a nova porta. -
Configurar o Nginx como proxy reverso:
Agora, vamos configurar o Nginx para encaminhar solicitações para o Apache. Primeiro, crie um novo arquivo de configuração para o seu site no Nginx:arduinosudo nano /etc/nginx/sites-available/seusiteE adicione o seguinte conteúdo, ajustando as configurações conforme necessário:
nginxserver { listen 80; server_name seu_dominio.com; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }Este arquivo de configuração diz ao Nginx para encaminhar todas as solicitações recebidas para o Apache, que está sendo executado na porta 8080 no mesmo servidor.
-
Ativar o site no Nginx:
Crie um link simbólico do arquivo de configuração do site do Nginx desites-availableparasites-enabledpara ativar o site:bashsudo ln -s /etc/nginx/sites-available/seusite /etc/nginx/sites-enabled/ -
Testar a configuração do Nginx:
Antes de recarregar o Nginx, verifique se a sintaxe do arquivo de configuração está correta:sudo nginx -tSe não houver erros, você pode recarregar o Nginx para aplicar as alterações:
sudo systemctl reload nginx -
Testar o funcionamento:
Agora, você pode acessar seu site através do Nginx. Verifique se tudo está funcionando corretamente, visitando seu domínio no navegador.
Com essas etapas, você configurou com sucesso o Nginx como um servidor web e um proxy reverso para o Apache em um servidor Ubuntu 18.04. Este setup é útil para melhorar o desempenho e a segurança do seu servidor, bem como para permitir a execução de aplicativos web diferentes em uma única máquina.
“Mais Informações”

Além das etapas básicas fornecidas anteriormente, é importante entender alguns conceitos e opções adicionais ao configurar o Nginx como um servidor web e um proxy reverso para o Apache. Vou expandir um pouco mais sobre esses pontos:
-
Conceito de Proxy Reverso:
Um proxy reverso é um servidor que recebe solicitações de clientes e as encaminha para um ou mais servidores de destino. No caso desta configuração, o Nginx atua como um proxy reverso, recebendo solicitações HTTP dos clientes e encaminhando-as para o Apache, que hospeda o conteúdo do site. Isso pode ajudar a melhorar o desempenho, a segurança e a escalabilidade do sistema. -
Balanceamento de Carga:
Além de encaminhar solicitações para um único servidor Apache, o Nginx pode ser configurado para balancear a carga entre vários servidores Apache. Isso é útil para distribuir o tráfego de entrada de forma mais equilibrada, melhorando o desempenho e a disponibilidade do sistema. Para fazer isso, basta listar vários servidores Apache na diretivaproxy_passdo arquivo de configuração do Nginx. -
SSL/TLS Termination:
O Nginx pode ser configurado para lidar com a terminação SSL/TLS, o que significa que ele pode receber solicitações HTTPS dos clientes, descriptografá-las e encaminhá-las para o Apache como HTTP. Isso alivia a carga de processamento do Apache e simplifica a configuração do SSL/TLS, já que apenas o Nginx precisa ter certificados SSL instalados. Para configurar isso, você precisaria adicionar diretivas SSL ao bloco de servidor do Nginx e configurar o Apache para ouvir em uma porta não SSL. -
Cache:
O Nginx inclui recursos de caching que podem ajudar a melhorar o desempenho do site, armazenando em cache respostas de solicitações HTTP frequentes. Isso reduz a carga nos servidores de backend (como o Apache) e melhora o tempo de carregamento das páginas para os usuários. Você pode configurar o Nginx para armazenar em cache determinados tipos de arquivos ou respostas HTTP específicas. -
Compressão:
O Nginx pode comprimir conteúdo antes de enviá-lo para os clientes, o que pode reduzir significativamente o tamanho das respostas HTTP e, consequentemente, o tempo de carregamento das páginas. Isso é especialmente útil para dispositivos móveis e conexões de internet mais lentas. A compressão pode ser ativada no Nginx através de diretivas comogzip. -
Segurança:
O Nginx oferece várias opções de segurança que podem ser configuradas para proteger o servidor e os aplicativos web hospedados nele. Isso inclui limitação de taxa, proteção contra ataques DDoS, proteção de diretórios, controle de acesso baseado em IP, entre outros recursos. Certifique-se de revisar e configurar adequadamente as opções de segurança do Nginx para proteger seu servidor e seus dados.
Ao considerar esses aspectos adicionais e personalizar a configuração de acordo com as necessidades específicas do seu ambiente e aplicativos, você pode otimizar ainda mais o desempenho, a segurança e a confiabilidade do seu servidor web. É sempre recomendável testar e monitorar o sistema após fazer alterações significativas na configuração para garantir que tudo esteja funcionando conforme o esperado.

