::: info
Un Reverse Proxy è un server che si posiziona tra gli utenti esterni e i tuoi servizi interni. Riceve le richieste sulla porta standard HTTPS (443) e le instrada al container corretto all'interno della rete Docker, aggiungendo un layer di sicurezza e crittografia.
:::
L'utilizzo di un proxy centralizzato offre tre vantaggi architetturali critici:
Utilizziamo una rete Docker dedicata chiamata proxy_net. Tutti i container che devono essere visibili dall'esterno dovranno essere collegati a questa rete.
docker-compose.yamlservices:
npm:
image: 'jc21/nginx-proxy-manager:latest'
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- '80:80' # HTTP
- '81:81' # Dashboard di gestione (Admin UI)
- '443:443' # HTTPS
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
networks:
- proxy_net
networks:
proxy_net:
external: true
Quando installi un nuovo servizio (es. Portainer o AnythingLLM), segui questo protocollo:
proxy_net.portainer.carrubanet.duckdns.org).9000).Un architetto deve garantire l'integrità dei dati. Nella tab Advanced di ogni Proxy Host, è consigliato iniettare questi header di sicurezza:
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "no-referrer-when-downgrade";
Se hai servizi che devono essere accessibili solo dalla tua rete locale o tramite VPN, NPM permette di creare Access Lists. Puoi definire una whitelist di indirizzi IP (es. 192.168.1.0/24) o richiedere una password aggiuntiva (Basic Auth) prima di mostrare la pagina di login del servizio.
Tags: #Docker #Nginx #ReverseProxy #SSL #Security #DevOps*