Nginx Proxy Manager gratuito e soluções de proxy reverso pagas diferem no que entregam além do roteamento: o NPM é open source (licença MIT), cobre SSL automático via Let's Encrypt, proxy reverso para aplicações Node.js e listas de acesso sem custo de licença, enquanto as opções pagas agregam WAF gerenciado, mitigação de DDoS em escala e suporte com SLA. Para um ou poucos VPS Linux, o gratuito costuma bastar — desde que combinado com firewall e hardening, porque sozinho ele não substitui um WAF completo. Abaixo, o comparativo honesto e a configuração segura para Node.js.
Nginx Proxy Manager gratuito vs pago: o que muda na prática
O custo real de um proxy reverso não está na licença, mas na infraestrutura e no tempo de operação. O Nginx Proxy Manager roda em um container Docker leve, então o investimento se resume ao VPS e à manutenção da sua equipe. Já as alternativas pagas vendem, principalmente, camadas que o NPM não possui nativamente. Veja o comparativo direto:
- Licença: NPM é MIT, sem custo; pagos cobram por mês, por domínio ou por tráfego.
- SSL: ambos automatizam certificados; o NPM usa Let's Encrypt com renovação integrada.
- Proxy reverso para Node.js: NPM cobre HTTP, HTTPS e WebSockets; pagos adicionam balanceamento multi-região.
- WAF e DDoS: NPM oferece apenas "Block Common Exploits" e ACLs por IP; pagos oferecem WAF gerenciado e mitigação em escala.
- Suporte: NPM depende da comunidade; pagos incluem SLA e suporte comercial.
- Manutenção: no NPM você atualiza a imagem Docker; no pago, o fornecedor cuida.
Quando o gratuito vale a pena: aplicações Node.js internas, APIs de pequeno e médio porte, projetos de agência com dezenas de domínios em um único servidor. Quando o pago vale a pena: exposição pública com histórico de ataques, requisito contratual de SLA, ou necessidade de balancear entre vários data centers. Se você ainda está decidindo o servidor, o guia sobre o que é e como funciona um servidor VPS ajuda a dimensionar recursos.
Pré-requisitos
- VPS Linux com Debian 13 (ou Rocky Linux 10 / AlmaLinux 10) e acesso root ou sudo.
- Docker Engine e plugin Docker Compose instalados (
docker compose versiondeve responder). - Domínio com registro A apontando para o IP público do servidor (ex.:
app.seudominio.com.br→203.0.113.10). - Portas 80 e 443 liberadas no firewall; porta 81 restrita ao seu IP ou VPN.
- Aplicação Node.js ouvindo em uma porta interna (ex.: 3000), já testada localmente.
Instalar o Nginx Proxy Manager com Docker Compose no Debian 13
A instalação do painel de proxy reverso é feita inteiramente em containers, o que facilita atualização e rollback. Crie a estrutura e o arquivo Compose:
mkdir -p /opt/npm && cd /opt/npm
cat > docker-compose.yml <<'EOF'
services:
npm:
image: jc21/nginx-proxy-manager:latest
container_name: npm
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "127.0.0.1:81:81"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
networks:
- proxy
networks:
proxy:
name: proxy
EOF
docker compose up -d
[+] Running 2/2
✔ Network proxy Created
✔ Container npm Started
Repare que a porta 81 foi publicada apenas em 127.0.0.1: o painel administrativo não fica exposto à internet. Para acessá-lo, use um túnel SSH a partir da sua máquina:
ssh -L 8181:127.0.0.1:81 [email protected]
Depois abra http://localhost:8181 no navegador. No primeiro login, o NPM exige a troca do usuário e senha padrão — faça isso imediatamente. Confirme que o container está saudável:
docker ps --filter name=npm --format "{{.Names}} {{.Status}}"
npm Up 2 minutes
Como configurar o Nginx Proxy Manager para aplicação Node.js
O ponto central da configuração de proxy reverso seguro é manter o Node.js fora do host público e alcançável apenas pela rede interna do Docker. Suba a aplicação na mesma rede proxy, sem publicar porta:
cd /opt/app
cat > docker-compose.yml <<'EOF'
services:
api:
build: .
container_name: api-node
restart: unless-stopped
environment:
- NODE_ENV=production
- PORT=3000
expose:
- "3000"
networks:
- proxy
networks:
proxy:
external: true
EOF
docker compose up -d --build
Teste a conectividade interna a partir do container do NPM — se este comando responder, o proxy conseguirá alcançar a aplicação:
docker exec npm curl -s -o /dev/null -w "%{http_code}\n" http://api-node:3000/
200
Agora crie o Proxy Host no painel:
- Em Hosts → Proxy Hosts → Add Proxy Host, informe
app.seudominio.com.brem Domain Names. - Scheme
http, Forward Hostnameapi-node, Forward Port3000. - Ative Websockets Support (essencial para Socket.IO) e Block Common Exploits.
- Na aba SSL, escolha "Request a new SSL Certificate", marque Force SSL, HTTP/2 Support e HSTS Enabled, aceite os termos do Let's Encrypt e salve.
- Na aba Advanced, adicione cabeçalhos úteis para o Node.js confiar no proxy:
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;
proxy_read_timeout 90s;
No código Node.js com Express, habilite app.set('trust proxy', 1) para que o IP real do cliente e o protocolo HTTPS sejam reconhecidos. Valide externamente:
curl -sI https://app.seudominio.com.br | head -n 5
HTTP/2 200
server: openresty
strict-transport-security: max-age=63072000; includeSubDomains; preload
content-type: application/json; charset=utf-8
Hardening: firewall, listas de acesso e o que o NPM não cobre
A camada de segurança do proxy reverso precisa de reforço no host. Restrinja o firewall para que apenas 80, 443 e SSH fiquem abertos:
apt install -y ufw
ufw default deny incoming
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
ufw status numbered
Status: active
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
Atenção: antes de ativar o UFW, confirme que a regra da porta SSH foi adicionada, ou você perderá o acesso ao servidor. Se isso acontecer, consulte o guia para solucionar problemas de acesso SSH no VPS Linux.
No painel, use Access Lists para proteger rotas administrativas do Node.js (ex.: /admin) com autenticação básica e restrição por IP. Lembre-se dos limites: o NPM não inspeciona payloads como um WAF, não mitiga DDoS volumétrico e não atualiza suas dependências Node.js. Mantenha npm audit na rotina e a imagem do NPM atualizada com docker compose pull && docker compose up -d. Se esses limites forem críticos para o seu negócio, é exatamente aí que a solução paga se justifica.
Problemas comuns e como resolver
Sintoma: erro 502 Bad Gateway ao acessar o domínio
Causa: o NPM não alcança o container Node.js — nomes diferentes, redes distintas ou aplicação ouvindo apenas em localhost dentro do container.
Solução: confira com docker network inspect proxy se ambos os containers estão na rede; no Node.js, use app.listen(3000, '0.0.0.0'). Repita o curl interno mostrado acima.
Sintoma: certificado Let's Encrypt falha com "Internal Error"
Causa: o DNS ainda não propagou, a porta 80 está bloqueada ou há outro serviço ocupando-a no host.
Solução: valide o registro A com dig +short app.seudominio.com.br, verifique a porta com ss -tlnp | grep ':80' e leia docker logs npm --tail 50. O guia de zona DNS com registros A, MX, CNAME e TXT ajuda a revisar a configuração.
Sintoma: WebSockets desconectam ou Socket.IO cai para polling
Causa: "Websockets Support" desativado no Proxy Host ou timeout de leitura curto.
Solução: ative a opção e adicione proxy_read_timeout 90s; na aba Advanced; ajuste conforme o intervalo de ping da sua aplicação.
Sintoma: Express registra sempre o IP interno do proxy
Causa: a aplicação não confia nos cabeçalhos X-Forwarded-*.
Solução: defina app.set('trust proxy', 1) e confirme que os cabeçalhos foram adicionados na configuração avançada do host.
Perguntas frequentes sobre Nginx Proxy Manager gratuito vs pago
O Nginx Proxy Manager é realmente gratuito?
Sim, o Nginx Proxy Manager é um projeto open source distribuído sob licença MIT, sem custo de licença. O único investimento real é a infraestrutura onde ele roda, como um VPS Linux com Docker, e o tempo de configuração e manutenção da sua equipe.
Como configurar o Nginx Proxy Manager como proxy reverso para uma aplicação Node.js?
Suba o Nginx Proxy Manager via Docker Compose, acesse o painel na porta 81, crie um Proxy Host apontando para o IP interno e a porta da aplicação Node.js (por exemplo, 3000), ative Websockets Support e Block Common Exploits e solicite um certificado Let's Encrypt na aba SSL com Force SSL e HTTP/2 habilitados. A aplicação Node.js deve ficar acessível apenas na rede interna do Docker ou em 127.0.0.1.
Vale a pena pagar por um proxy reverso em vez de usar o Nginx Proxy Manager?
Depende do cenário. Para um ou poucos VPS com aplicações Node.js, o Nginx Proxy Manager gratuito cobre SSL automático, proxy reverso e listas de acesso sem custo. Soluções pagas fazem sentido quando você precisa de WAF gerenciado, mitigação de DDoS em escala, suporte comercial com SLA ou balanceamento entre vários data centers.
O Nginx Proxy Manager protege a aplicação Node.js contra ataques?
Ele oferece uma camada básica de proteção: certificado TLS automático, bloqueio de exploits comuns, listas de acesso por IP e autenticação básica, além de esconder a porta da aplicação. Ele não substitui um firewall no servidor, atualizações da aplicação Node.js nem um WAF completo, por isso deve ser combinado com UFW ou nftables e boas práticas de hardening.
Preciso expor a porta 3000 do Node.js na internet ao usar o Nginx Proxy Manager?
Não. A prática segura é não publicar a porta 3000 no host ou publicá-la apenas em 127.0.0.1, deixando o Nginx Proxy Manager alcançar a aplicação pela rede interna do Docker. Assim, apenas as portas 80 e 443 ficam abertas ao público e a porta 81 do painel deve ser restrita por firewall ou VPN.
Conclusão
- Comece com o Nginx Proxy Manager gratuito: para a maioria das aplicações Node.js em VPS, ele resolve SSL, roteamento e ACLs sem custo de licença.
- Feche o perímetro: porta 81 só via túnel SSH ou VPN, Node.js sem porta publicada, UFW liberando apenas 80 e 443.
- Migre para uma solução paga apenas quando WAF, mitigação de DDoS ou SLA passarem a ser requisitos reais do negócio — não por precaução genérica.
Leia também
- Corrigir SSL inválido no Nginx Proxy Manager no Fedora
- Como Configurar o Traefik Dashboard Seguro no Rocky Linux 9
- Como configurar Docker e Nginx no FreeBSD 14.3
Precisa de ajuda com Nginx Proxy Manager e Node.js?
Um VPS Linux com Docker é a base ideal para rodar o Nginx Proxy Manager e suas aplicações Node.js com isolamento e SSL automático. A AviraHost oferece servidores VPS com recursos dedicados e suporte para você colocar o proxy reverso em produção com segurança.