CRITICAL INFRA
Loading critical CVEs…
ALL EXPLOITED
Loading…

Docker in productie cu Nginx — reverse proxy, TLS si hardening

📅 2026-09-10 · Cyber Immunity

Docker rezolva „merge pe masina mea", dar in productie ai nevoie de un punct de intrare controlat: Nginx in fata containerelor, cu TLS terminat intr-un singur loc, retele izolate si porturi inchise. Ghid practic, pas cu pas, cu docker-compose.

De ce Docker + Nginx

Arhitectura

Internetul atinge doar Nginx (80/443). Nginx face proxy catre containerele de aplicatie printr-o retea bridge interna Docker. Baza de date e in aceeasi retea, dar NU publica niciun port catre exterior.

Internet443 / 80 Nginxreverse proxy + TLS docker network (bridge, intern) app1 :8080 app2 :3000 db (postgres)fara port public

Pas 1 — Instalare Docker

Pas 2 — docker-compose pentru aplicatie

Exemplu docker-compose.yml cu o aplicatie + Postgres, healthcheck si restart policy:

Pas 3 — Nginx reverse proxy

Nginx (pe host sau ca container in aceeasi retea web) face proxy catre container pe numele serviciului:

Pas 4 — TLS cu Let's Encrypt

Pas 5 — Hardening

Let's Encrypt automat

Certificatul nu trebuie reinnoit manual. Certbot instaleaza un systemd timer (certbot.timer) care ruleaza certbot renew de doua ori pe zi si reinnoieste doar ce expira in mai putin de 30 de zile.

GeoIP + firewall cu nftables

Blocarea pe tara se poate face pe doua niveluri. La nivel nginx (modul GeoIP2 + map $geoip2_country_code) raspunzi cu 403. Mai eficient e sa pici pachetele in nftables inainte sa ajunga la nginx — blochezi si scanarile, nu doar cererile HTTP.

CrowdSec pe logurile Nginx

CrowdSec citeste logurile nginx (access.log / error.log), aplica scenarii si blocheaza IP-urile ostile — cu inteligenta colectiva (IP-uri raportate de toata reteaua CrowdSec).

Logging si operare

Concluzie

Pattern-ul Nginx + Docker iti da deploy reproductibil, un singur punct de intrare TLS si o suprafata de atac minima — potrivit de la un singur VPS pana la mai multe noduri. Il proiectam, il securizam si il monitorizam pentru tine.

Discutam despre proiectul tau →