https://github.com/williamkoller/node-nginx
Node + Nginx
https://github.com/williamkoller/node-nginx
https nginx nodejs ssl-certificates
Last synced: 8 months ago
JSON representation
Node + Nginx
- Host: GitHub
- URL: https://github.com/williamkoller/node-nginx
- Owner: williamkoller
- Created: 2025-03-30T00:59:27.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-03-30T00:59:58.000Z (10 months ago)
- Last Synced: 2025-03-30T08:02:20.333Z (10 months ago)
- Topics: https, nginx, nodejs, ssl-certificates
- Language: Shell
- Homepage:
- Size: 10.7 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🔐 Node.js + Nginx com HTTPS
Este projeto demonstra como configurar uma aplicação Node.js com Nginx como proxy reverso, utilizando HTTPS com certificado autoassinado em ambiente local.
---
## 📁 Estrutura
```
node-nginx/
├── certs/ # Certificados autoassinados
│ ├── cert.pem
│ ├── key.pem
│ └── openssl-san.cnf
│
├── nginx/
│ └── default.conf # Configuração do Nginx
│
├── src/
│ └── app.js # Aplicação Node.js com Express
│
├── Dockerfile # Dockerfile do app Node
├── docker-compose.yml # Orquestra Node + Nginx
├── generate-certificate.sh # Script para gerar certificados
├── package.json
└── README.md
```
---
## 🚀 Como executar localmente (com certificado autoassinado)
### 1. Gere o certificado
```bash
chmod +x generate-certificate.sh
./generate-certificate.sh
```
> Isso criará `cert.pem` e `key.pem` em `./certs`, com suporte a SAN (Subject Alternative Name) para evitar erros modernos em navegadores.
---
### 2. Suba os containers
```bash
docker-compose up --build
```
A aplicação estará disponível em:
- 🔒 HTTPS: `https://example.com`
> ⚠️ Adicione o domínio ao seu `/etc/hosts`:
>
> ```
> 127.0.0.1 example.com
> ```
---
## 🔐 Acesso HTTPS
Você verá um aviso de "Não seguro" no navegador, pois o certificado é autoassinado. Clique em **"Avançado" > "Prosseguir para example.com"** para continuar.
---
## ✅ Produção com Let's Encrypt
> Certifique-se de:
> - Ter um domínio real (ex: `meudominio.com`)
> - DNS do domínio apontado para seu servidor
> - Portas 80 e 443 abertas
### 1. Instale o Certbot
```bash
sudo apt update
sudo apt install certbot python3-certbot-nginx -y
```
### 2. Gere o certificado válido
```bash
sudo certbot --nginx -d meudominio.com -d www.meudominio.com
```
Certbot irá editar o `default.conf` automaticamente com HTTPS.
---
## 🔁 Renovação automática
Já configurado pelo Certbot com `cron` ou `systemd`. Para testar:
```bash
sudo certbot renew --dry-run
```
---
## 🛡 Segurança adicional
- ✅ Headers seguros configurados no Nginx (`X-Frame-Options`, `X-XSS-Protection`, etc.)
- ✅ HTTPS com TLSv1.2 e TLSv1.3
- ✅ Reverse proxy com `proxy_set_header` para IP real e protocolo original
---
## 👨💻 Autor
Feito com ❤️ por William Koller