Introdução ao Nginx como Reverse Proxy
O Nginx é um servidor web de código aberto amplamente utilizado como reverse proxy, balanceador de carga e servidor web. Como reverse proxy, o Nginx pode ser configurado para encaminhar solicitações de clientes para servidores de backend, m
O Nginx é um servidor web de código aberto amplamente utilizado como reverse proxy, balanceador de carga e servidor web. Como reverse proxy, o Nginx pode ser configurado para encaminhar solicitações de clientes para servidores de backend, melhorando a segurança, o desempenho e a escalabilidade.
Antes de configurar o Nginx como reverse proxy, é necessário instalar o pacote do Nginx no Rocky Linux 9. Isso pode ser feito utilizando o gerenciador de pacotes dnf:
sudo dnf install -y nginxApós a instalação, é possível iniciar o serviço do Nginx e habilitá-lo para iniciar automaticamente após a inicialização do sistema:
sudo systemctl start nginxsudo systemctl enable nginxPara configurar o Nginx como reverse proxy, é necessário criar ou modificar o arquivo de configuração do Nginx. O arquivo de configuração principal do Nginx é o /etc/nginx/nginx.conf.
Aqui está um exemplo de configuração básica do Nginx como reverse proxy:
http { server { listen 80; server_name exemplo.com;
location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }}Nesse exemplo, o Nginx está configurado para ouvir na porta 80 e encaminhar solicitações para o servidor de backend que está rodando na porta 8080 no mesmo host.
Se você tiver múltiplos servidores de backend, é possível configurar o Nginx para distribuir as solicitações entre eles. Isso pode ser feito utilizando a diretiva upstream:
http { upstream backend { server localhost:8080; server localhost:8081; }
server { listen 80; server_name exemplo.com;
location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }}Nesse exemplo, o Nginx está configurado para distribuir as solicitações entre dois servidores de backend que estão rodando nas portas 8080 e 8081.
O Nginx também pode ser configurado para realizar autenticação e autorização das solicitações. Isso pode ser feito utilizando a diretiva auth_basic:
http { server { listen 80; server_name exemplo.com;
location / { auth_basic "Área restrita"; auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }}Nesse exemplo, o Nginx está configurado para solicitar autenticação básica para acessar a área restrita. O arquivo /etc/nginx/.htpasswd contém as credenciais de autenticação.
Aqui estão algumas dicas práticas e armadilhas comuns ao configurar o Nginx como reverse proxy:
- Certifique-se de que o Nginx esteja configurado para ouvir na porta correta e que o servidor de backend esteja rodando na porta correta.
- Utilize a diretiva
proxy_set_headerpara definir os cabeçalhos de solicitação que devem ser encaminhados para o servidor de backend. - Utilize a diretiva
upstreampara distribuir as solicitações entre múltiplos servidores de backend. - Certifique-se de que o arquivo de configuração do Nginx esteja corretamente formatado e que não haja erros de sintaxe.
Aqui estão os passos sequenciais para configurar o Nginx como reverse proxy:
- Instale o pacote do Nginx no Rocky Linux 9 utilizando o gerenciador de pacotes
dnf. - Inicie o serviço do Nginx e habilitá-lo para iniciar automaticamente após a inicialização do sistema.
- Crie ou modifique o arquivo de configuração do Nginx (
/etc/nginx/nginx.conf) para configurar o Nginx como reverse proxy. - Certifique-se de que o servidor de backend esteja rodando e configurado corretamente.
- Teste a configuração do Nginx como reverse proxy acessando o servidor de backend através do Nginx.
Agora que você configurou o Nginx como reverse proxy, é possível prosseguir com a configuração de outros recursos do Nginx, como balanceamento de carga e autenticação. Além disso, é importante garantir que o servidor de backend esteja configurado corretamente e que o Nginx esteja monitorado e mantido regularmente para garantir a estabilidade e a segurança do sistema.