13. Multiple Websites on One Server and HTTPS with Certbot
13.1 How Name-Based Virtual Hosting Works
Ekach IP, ekach port 80 – mag server la kasa kalte konti site dakhvaychi? Browser pratyek request madhe Host: header pathavto. Web server to header server_name / ServerName shi julavto.
Browser: GET / HTTP/1.1 Host: site1.yourdomain.com ─┐
Browser: GET / HTTP/1.1 Host: site2.yourdomain.com ─┼─► 203.0.113.10:80 ─► match Host
Scanner: GET / HTTP/1.1 Host: 203.0.113.10 ─┘ │
├─ site1 → /var/www/site1
├─ site2 → /var/www/site2
└─ no match → default site
Why this matters for security
Scanners and bots usually connect by IP, not by name. If your default site is a real application, every internet scanner sees it. A catch-all default that returns nothing (Nginx return 444) hides your real sites from IP-based scanning and blocks Host-header tricks.
Ravindra Bagale's Tip
Don sites banavlya aani dogha var ekach site disto – khup students cha problem. Karan server_name julat nahi aani default site jinkte. sudo nginx -T | grep server_name kiwa sudo apachectl -S ne kontya naavala konti file uttar dete te bagha.
Practice task
Use curl -v http://example.com -o /dev/null and find the Host header your client sends.