Un reverse proxy nginx containerizzato per l'ecosistema Digital Humanities dell'Università di Cagliari
Questo progetto implementa un reverse proxy nginx ad alta disponibilità che gestisce il traffico per 47+ siti web dell'Università di Cagliari, principalmente focalizzati sulle Digital Humanities. Il sistema route intelligentemente le richieste tra domini pubblici e servizi backend distribuiti.
- 🐳 Containerizzato - Deployment semplificato con Docker
- 🔐 SSL/TLS Completo - Certificati DigiCert CA e Let's Encrypt
- 🌍 Multi-dominio - Supporto per domini
.unica.it,.dh.unica.ite domini esterni - ⚡ Alta Performance - Compressione gzip e ottimizzazioni avanzate
- 🛡️ Sicurezza - Protezione PHP, autenticazione e headers di sicurezza
graph TB
Internet[🌐 Internet] --> Proxy[🔄 DH.UNICA Reverse Proxy]
Proxy --> DH[📚 dh.unica.it<br/>Digital Humanities Portal]
Proxy --> UNICA[🏛️ *.unica.it<br/>University Domains]
Proxy --> EXT[🌍 External Domains<br/>cosmomed.org, digitaliststor.it]
DH --> DHContainer[🐳 dh.unica_nginx:80<br/>Main DH Container]
DH --> Backend1[🖥️ 90.147.144.145<br/>Storia, Glossari, Antas]
DH --> Backend2[🖥️ 90.147.144.146<br/>Patrimonio, Risorse]
DH --> Backend3[🖥️ 90.147.144.147<br/>EMODSAR, Phaidra]
UNICA --> Backend4[🖥️ 90.147.144.148<br/>Humanities, GIS]
UNICA --> Backend5[🖥️ 90.147.144.162<br/>Archivio Storico]
EXT --> Backend6[🖥️ External Servers<br/>CoSMoMed, DigitalIst]
- 🐳 Docker & Docker Compose
- 🔐 Certificati SSL (DigiCert CA o Let's Encrypt)
- 🌐 Accesso alla rete dei server backend
# Clone del repository
git clone https://github.com/caprowsky/proxy.dh.unica.git
cd proxy.dh.unica
# Avvio del reverse proxy
docker-compose up -d
# Verifica dello stato
docker logs dhunica_proxypass# Posiziona i certificati nelle directory appropriate:
# - DigiCert CA: /etc/digicertca/live/dh.unica.it/
# - Let's Encrypt: /etc/letsencrypt/live/domain/
# Rinnovo automatico certificati Let's Encrypt
./nginx-certs.sh| Comando | Descrizione | Uso |
|---|---|---|
./nginx-reload.sh |
🔄 Ricarica configurazione senza downtime | Modifiche alle configurazioni |
./nginx-restart.sh |
🔄 Restart completo del container | Cambiamenti strutturali |
./nginx-reset.sh |
🔄 Rebuild completo | Problemi critici |
./nginx-certs.sh |
🔐 Rinnovo certificati SSL | Manutenzione certificati |
- Crea il file di configurazione in
sites-enabled/:
# Per sottodomini DH: sottodominio_dhunica.conf
# Per domini UNICA: dominio.conf
# Per domini esterni: dominio.conf- Configura SSL proof directory:
mkdir -p ssl-proof/nuovo-dominio/- Applica la configurazione:
./nginx-reload.sh# Log del container
docker logs dhunica_proxypass
# Test configurazione nginx
docker exec dhunica_proxypass nginx -t
# Verifica connessioni backend
curl -I https://storia.dh.unica.it/colonizzazioninterne- 48 URL pubbliche distinte
- 7 domini principali (dh.unica.it, unica.it, cosmomed.org, digitaliststor.it, thelastofus.it, atliteg.org)
- 23 sottoprogetti del dominio dh.unica.it
- 8 server backend fisici/virtuali
🏠 https://dh.unica.it - Portale principale
📚 https://storia.dh.unica.it - Progetto Storia
🎨 https://arte.dh.unica.it - Progetto Arte
🗺️ https://geografia.dh.unica.it - Progetto Geografia
📖 https://letteratura.dh.unica.it - Progetto Letteratura
🎵 https://musica.dh.unica.it - Progetto Musica
... e molti altri!
🏛️ https://archiviostorico.unica.it - Archivio Storico
🎓 https://humanities.unica.it - Portale Humanities
📅 https://400.unica.it - 400 Anni Ateneo
📦 https://patrimonio.archiviostorico.unica.it - Gestione Patrimonio
🗺️ https://atlante.atliteg.org - Atlante ATLITEG
🌍 https://www.cosmomed.org - CoSMoMed Project
📚 https://www.digitaliststor.it - Istituto Storia Digitale
📋 Lista completa: Vedi SITI_WEB_REVERSE_PROXY.md per la tabella dettagliata di tutti i siti.
proxy.dh.unica/
├── 🐳 docker-compose.yml # Configurazione container
├── 📋 Dockerfile # Immagine nginx custom
├── ⚙️ sites-enabled/ # Configurazioni nginx
│ ├── dhunica.conf # Dominio principale
│ ├── *_dhunica.conf # Sottoprogetti DH
│ └── *.conf # Altri domini
├── 🔐 ssl-proof/ # Directory SSL proof
├── 🔑 htpassword/ # File autenticazione
├── 🔄 redirect/ # Configurazioni redirect
├── 🌐 html/ # Contenuti statici
└── 📜 scripts di gestione # nginx-*.sh
Ogni sito segue questo template standardizzato:
server {
listen 80;
server_name example.dh.unica.it;
return 301 https://example.dh.unica.it$request_uri;
}
server {
listen 443 ssl;
server_name example.dh.unica.it;
# SSL Certificates
ssl_certificate /etc/digicertca/live/dh.unica.it/Cert_bundle.pem;
ssl_certificate_key /etc/digicertca/live/dh.unica.it/dh.key;
# SSL Proof per ACME challenges
location /.well-known {
root /var/www/ssl-proof/dhunica/;
}
# Proxy principale
location / {
proxy_pass http://backend:port;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
# ... altri headers standard
}
# Sicurezza PHP
location ~* /files/.*.php$ {
deny all;
}
}- Compressione gzip attiva su tutti i siti
- Client max body size: 4000MB per upload grandi
- Proxy timeout: 900 secondi per operazioni lunghe
- Buffer ottimizzati per traffico intenso
| Tipo Domain | Certificato | Path |
|---|---|---|
*.dh.unica.it |
DigiCert CA | /etc/digicertca/live/dh.unica.it/ |
*.unica.it |
DigiCert CA | /etc/digicertca/live/domain/ |
| Domini esterni | Let's Encrypt | /etc/letsencrypt/live/domain/ |
- ✅ Redirect HTTPS automatico per tutti i domini
- ✅ Blocco file PHP in directory uploads (
/files/) - ✅ Headers di sicurezza standard
- ✅ Autenticazione HTTP Basic disponibile
- ✅ SSL proof directories per validazione certificati
🔴 Sito non raggiungibile
# Verifica stato container
docker ps | grep dhunica
# Controlla logs
docker logs dhunica_proxypass
# Test configurazione
docker exec dhunica_proxypass nginx -t🔴 Errore SSL
# Verifica certificati
ls -la /etc/digicertca/live/dh.unica.it/
ls -la /etc/letsencrypt/live/domain/
# Rinnova certificati
./nginx-certs.sh🔴 Backend non risponde
# Test connettività backend
curl -I http://90.147.144.145:7000
curl -I http://dh.unica_nginx:80
# Verifica reti Docker
docker network ls | grep dhunica# Monitoring in tempo reale
docker logs -f dhunica_proxypass
# Analisi errori
docker logs dhunica_proxypass 2>&1 | grep -i error
# Test completo connettività
for url in storia.dh.unica.it arte.dh.unica.it; do
echo "Testing $url..."
curl -I "https://$url"
done- Fork del repository
- Crea branch per la feature:
git checkout -b feature/nuovo-sito - Commit delle modifiche:
git commit -am 'Add nuovo sito' - Push del branch:
git push origin feature/nuovo-sito - Pull Request per review
- Naming: Seguire i pattern esistenti per i file
.conf - SSL: Configurare sempre SSL proof directory
- Testing: Testare con
nginx -tprima del deploy - Documentation: Aggiornare
SITI_WEB_REVERSE_PROXY.md
- 📋 Lista Completa Siti - Tutti i 47 siti web gestiti
- ⚙️ Copilot Instructions - Guide per AI agents
- 🐳 Docker Compose - Configurazione container
- 📜 Scripts di Gestione - Automazione operazioni
Questo progetto è sviluppato per l'Università di Cagliari - Dipartimento Digital Humanities.
- 🏛️ Università di Cagliari - unica.it
- 📚 Digital Humanities - dh.unica.it
- 💻 Repository - github.com/caprowsky/proxy.dh.unica
# Last update: ven 3 ott 2025, 12:51:16, CEST # Webhook deploy system configured - ven 3 ott 2025, 16:48:10, CEST