August 14, 2026 · by CLIQHOST
Dacă rulezi mai multe aplicații web în containere Docker pe același server, ai nevoie de o metodă elegantă prin care să le expui publicului fără să deschizi zeci de porturi individuale. Soluția standard în industrie este Nginx ca reverse proxy — un strat care preia cererile HTTP/HTTPS și le direcționează către containerul potrivit.
În acest ghid vei învăța să configurezi Nginx ca reverse proxy pentru containere Docker pe un VPS NVMe sau VPS SSD, pas cu pas, cu exemple concrete de fișiere de configurare și HTTPS.
Fără un reverse proxy, fiecare container Docker trebuie să asculte pe un port unic (ex. 3001, 3002, 8080). Asta înseamnă:
http://domeniu.md:3001Nginx ca reverse proxy rezolvă toate acestea: primește tot traficul pe porturile 80 și 443, apoi îl redirecționează intern către containerul corect pe baza numelui de domeniu sau a căii URL.
Înainte de a începe, asigură-te că ai:
Dacă Nginx nu este instalat, rulează:
sudo apt update
sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginx
Verifică că Nginx rulează:
sudo systemctl status nginx
Să presupunem că ai două aplicații:
Pornești containerele cu porturile mapate doar local (nu expuse public):
# App1
docker run -d --name app1 -p 127.0.0.1:3000:3000 myapp1:latest
# App2
docker run -d --name app2 -p 127.0.0.1:5000:5000 myapp2:latest
Important: Folosim
127.0.0.1:PORTpentru a lega containerul doar la interfața loopback — portul nu va fi accesibil din exterior, ci doar de pe server (unde rulează și Nginx).
Sau cu Docker Compose (docker-compose.yml):
version: '3.8'
services:
app1:
image: myapp1:latest
ports:
- "127.0.0.1:3000:3000"
restart: unless-stopped
app2:
image: myapp2:latest
ports:
- "127.0.0.1:5000:5000"
restart: unless-stopped
docker compose up -d
Creează câte un fișier de configurare pentru fiecare domeniu/aplicație în /etc/nginx/sites-available/.
sudo nano /etc/nginx/sites-available/app1.domeniu.md
server {
listen 80;
server_name app1.domeniu.md;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
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_cache_bypass $http_upgrade;
}
}
sudo nano /etc/nginx/sites-available/app2.domeniu.md
server {
listen 80;
server_name app2.domeniu.md;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_http_version 1.1;
proxy_set_header Host $host;
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;
}
}
Activează ambele configurări:
sudo ln -s /etc/nginx/sites-available/app1.domeniu.md /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/app2.domeniu.md /etc/nginx/sites-enabled/
Testează și reîncarcă Nginx:
sudo nginx -t
sudo systemctl reload nginx
Pentru a securiza traficul, instalează Certbot și obține certificate SSL gratuite:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d app1.domeniu.md -d app2.domeniu.md
Certbot va modifica automat fișierele Nginx pentru a adăuga blocurile SSL și redirecționarea HTTP → HTTPS.
După finalizare, configurarea pentru app1.domeniu.md va arăta similar cu:
server {
listen 443 ssl;
server_name app1.domeniu.md;
ssl_certificate /etc/letsencrypt/live/app1.domeniu.md/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/app1.domeniu.md/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 80;
server_name app1.domeniu.md;
return 301 https://$host$request_uri;
}
Dacă preferi certificate comerciale (OV sau EV), verifică opțiunile de certificate SSL de la CLIQHOST pentru proiecte business.
O practică mai curată este să pui Nginx însuși într-un container Docker și să comunici cu celelalte containere printr-o rețea Docker internă, fără a expune niciun port pe host.
version: '3.8'
networks:
webnet:
driver: bridge
services:
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./certbot/www:/var/www/certbot
- ./certbot/conf:/etc/letsencrypt
networks:
- webnet
restart: unless-stopped
app1:
image: myapp1:latest
expose:
- "3000"
networks:
- webnet
restart: unless-stopped
app2:
image: myapp2:latest
expose:
- "5000"
networks:
- webnet
restart: unless-stopped
În această configurare, proxy_pass din Nginx va folosi numele serviciului în loc de 127.0.0.1:
location / {
proxy_pass http://app1:3000;
}
Docker DNS intern rezolvă automat numele app1 la IP-ul containerului — elegant și sigur.
client_max_body_size 20M;
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
gzip on;
gzip_types text/plain application/json application/javascript text/css;
gzip_min_length 1000;
limit_req_zone $binary_remote_addr zone=api:10m rate=30r/m;
location /api/ {
limit_req zone=api burst=10 nodelay;
proxy_pass http://app1:3000;
}
Pentru securitate avansată la nivel de server, consultă și serviciile de administrare server oferite de CLIQHOST.
| Problemă | Soluție |
|---|---|
502 Bad Gateway |
Containerul Docker nu rulează sau portul e greșit |
404 Not Found |
server_name nu corespunde domeniului accesat |
SSL_ERROR_RX_RECORD_TOO_LONG |
Nginx ascultă pe 443 dar fără bloc SSL |
| Nginx nu pornește | Rulează sudo nginx -t pentru detalii eroare |
Verifică logurile Nginx:
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/nginx/access.log
Verifică starea containerelor:
docker ps
docker logs app1
Nginx ca reverse proxy pentru containere Docker este o combinație puternică și flexibilă: poți rula zeci de aplicații pe același server, toate protejate cu HTTPS, accesibile prin domenii clare și izolate unele de altele.
Pentru rezultate optime, ai nevoie de un server cu resurse suficiente. Explorează planurile VPS NVMe sau serverele dedicate managed de la CLIQHOST — infrastructură locală din Moldova, cu suport tehnic inclus.
Ai întrebări sau vrei o configurare personalizată? Contactează echipa CLIQHOST — suntem gata să te ajutăm.
Recenzii reale de la clienți care au ales CLIQHOST pentru performanță, fiabilitate și suport tehnic.
"We moved our online shop from a foreign host and the difference is night and day — pages load instantly and support replies in minutes, in Romanian."
"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."
"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."