Nginx सर्व्हर ब्लॉक्स म्हणजे एकाच Nginx इन्स्टॉलेशनमध्ये अनेक डोमेन किंवा वेबसाइट्स वेगवेगळ्या सेटिंग्ससह होस्ट करण्याची प्रणाली आहे. यामध्ये example.com, blog.example.com आणि dusari-site.com यांसाठी स्वतंत्र root फोल्डर, log files, SSL सेटिंग्स आणि PHP कॉन्फिगरेशन देता येतात. एकूण प्रक्रिया म्हणजे प्रत्येक साइटसाठी वेगळा फोल्डर तयार करणे, DNS रेकॉर्ड्स सर्व्हरच्या IP ला point करणे, /etc/nginx/sites-available मध्ये प्रत्येकासाठी स्वतंत्र server block लिहिणे, sites-enabled मध्ये link करणे, config टेस्ट करणे आणि Nginx reload करणे.
या मार्गदर्शिकेत Nginx server blocks वापरून एकाच VPS किंवा cloud server वर अनेक वेबसाइट्स production-ready पद्धतीने कशा host करायच्या हे सविस्तर सांगितले आहे. केवळ काम चालणारं setup नव्हे, तर व्यवस्थापन, सुरक्षितता, स्पीड, बॅकअप आणि scalability लक्षात घेऊन process सांगितली आहे. विशेषतः एजन्सी, डेव्हलपर्स, ecommerce, multi-brand कंपन्या आणि एकाच VPS मध्ये अनेक प्रोजेक्ट्स चालवणारे system admins यांना practical steps मिळतील. अजून server घेतला नसेल तर VPS सर्व्हर आणि domain management साठी डोमेन तज्ञ हे guides जरूर वाचा.
Nginx सर्व्हर ब्लॉक्स म्हणजे काय?
Nginx मध्ये server block म्हणजे server{} कॉन्फिगरेशन, ज्यातून येणाऱ्या HTTP/HTTPS request ला कोणत्या साइटवर पाठवायचे ते ठरते. Apache मध्ये जसे VirtualHost असते, तसाच concept आहे. यूजर browser मध्ये domain टाकतो, ते DNS द्वारा IP ला resolve होते. Nginx request मधील Host header तपासतो आणि server_name value match झाली की संबंधित server block चालवतो.
यामुळे एकाच IP आणि एकाच physical/virtual server वर अनेक वेगवेगळ्या साइट्स चालू शकतात. प्रत्येक साइटसाठी root folder, access log, error log, redirect rules, SSL certificate, cache policy आणि security rules वेगळ्या ठेवता येतात. उदाहरणार्थ, corporate site /var/www/corp/public, blog /var/www/blog/public, staging /var/www/staging/public मध्ये ठेवता येईल.
Nginx ही design event-based architecture आहे, त्यामुळे high concurrency आणि कमी resources मध्ये traffic handle करू शकतो. म्हणून shared hosting, VPS, cloud server आणि high-traffic sites साठी Nginx लोकप्रिय आहे. Multi-site hosting योग्य चालण्यासाठी file permissions, DNS pointing, SSL setup, log separation हे details नीट plan करावे लागतात.
Nginx सर्व्हर ब्लॉक्स कधी वापरायचे?
Nginx server blocks तब्बल एकाच server वर अनेक web properties हाताळायचे असतील तेव्हा वापरले जातात. हे कधी दोन corporate sites असू शकतात, कधी 10+ client projects किंवा subdomains, microservices असू शकतात. महत्वाचा मुद्दा म्हणजे प्रत्येक प्रोजेक्ट logically वेगळा असावा.
- अनेक domains एकाच VPS वर चालवायचे असल्यास.
- www आणि non-www साइट्स canonical address ला redirect करायचे असल्यास.
- Subdomains वेगळ्या फोल्डर/अॅपला point करायचे असल्यास.
- प्रत्येक site साठी वेगळा SSL certificate आणि security policy ठेवायची असल्यास.
- Client projects वेगळ्या log files मध्ये monitor करायचे असल्यास.
- Laravel, WordPress, static HTML, Node.js सारख्या वेगळ्या apps एकाच server वर चालवायचे असल्यास.
उदाहरणार्थ, 4GB RAM VPS वर एक एजन्सी 8 low-traffic corporate sites होस्ट करू शकते. पण प्रत्येक site साठी traffic, disk usage, PHP processes, database load, backup frequency विचारावा लागतो. Resources heavy किंवा isolate हवे असल्यास मजबूत VPS, cloud किंवा managed hosting निवडावे. वेब होस्टिंग आणि संस्थागत होस्टिंग हे options तुलना करावेत.
शुरू करण्यापूर्वी आवश्यक गोष्टी
या guide मध्ये Ubuntu/Debian आधारित Linux server assume केले आहे. Commands distribution नुसार बदलू शकतात, पण concept सारखा आहे. Production मध्ये काहीही बदलण्याआधी backup घ्या. चुकीचा Nginx config केल्याने सर्व साइट्स काही काळ inaccessible होऊ शकतात.
तांत्रिक तयारी
- Root/sudo access असलेला Linux user account.
- Installed आणि चालू Nginx service.
- Server IP ला point केलेला किमान एक domain.
- Firewall मध्ये 80 आणि 443 ports open असणे.
- Site files साठी neat directory structure.
- SSL साठी valid certificate किंवा Let’s Encrypt वापरायचे.
- PHP apps साठी PHP-FPM installed असणे.
DNS मध्ये A record मुख्य domain IPv4 ला point करते, AAAA असल्यास IPv6 ला. www सारख्या subdomains साठी CNAME किंवा A record वापरता येईल. DNS propagation साधारण 5 मिनिट ते 24 तासात पूर्ण होते. Setup करताना आधी DNS तयार करून मग Nginx config करणे process speedup करते.
सुचविलेली फोल्डर रचना
Multi-site hosting मध्ये सर्व files एकाच फोल्डरमध्ये ठेवणे ही सर्वात मोठी चूक आहे. Short-term मध्ये सोपे वाटते, पण maintenance, backup, troubleshooting यासाठी वेळ वाया जातो. प्रत्येक domain साठी स्वतंत्र top folder, त्यात public, logs, backups सारखे subfolders ठेवणे हे उत्तम.
उदाहरण: /var/www/site1.com/public, /var/www/site1.com/logs, /var/www/site2.com/public, /var/www/site2.com/logs. Nginx root value public फोल्डरला point करावी. त्यामुळे app files, .env, backups direct web accessible नाहीत.
Test site साठी प्रत्येक फोल्डरमध्ये index.html ठेवून site नाव लिहा, त्यामुळे कोणता server block active आहे हे पटकन verify करता येईल. Production मध्ये folders चा owner www-data किंवा deploy करणारा special user असावा. Permissions: folders – 755, files – 644. WordPress सारख्या apps मध्ये uploads फोल्डर वेगळ्या permission मध्ये ठेवावा.
Step-by-Step Nginx Server Block Setup
खालील स्टेप्स site1.com domain साठी दाखवल्या आहेत; हेच pattern अन्य साइट्ससाठी repeat करा. प्रत्येक site साठी वेगळा server_name, root, log files वापरा.
1. Site फोल्डर तयार करा
सुरुवातीला web files साठी फोल्डर create करा. उदा.: sudo mkdir -p /var/www/site1.com/public. Test साठी /var/www/site1.com/public/index.html मध्ये "हे site1.com ची टेस्ट पेज आहे" असे लिहा.
Ownership सेट करण्यासाठी: sudo chown -R www-data:www-data /var/www/site1.com. Deploy वेगळ्या user ने करत असल्यास group permissions adjust करा. Production मध्ये 777 permissions टाळा; हे security risk आहे.
2. Server block config तयार करा
Nginx मध्ये inactive configs /etc/nginx/sites-available मध्ये ठेवतात, active configs sites-enabled मध्ये symbolic link करून activate करतात. Example: /etc/nginx/sites-available/site1.com.
Simple HTTP block असे दिसू शकते: server { listen 80; server_name site1.com www.site1.com; root /var/www/site1.com/public; index index.html index.htm; access_log /var/log/nginx/site1.com.access.log; error_log /var/log/nginx/site1.com.error.log; location / { try_files $uri $uri/ =404; } }
यात listen 80 – HTTP, server_name – domains, root – web files, index – default page, try_files – missing file/dir असल्यास 404. Static sites साठी हे setup पुरेसे आहे.
3. Site enable करा
Symbolic link तयार करा: sudo ln -s /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/site1.com. हे कॉपीपेक्षा safe आहे, कारण main config update केल्यास linked fileही update होते.
Default Nginx site हटवायची असल्यास /etc/nginx/sites-enabled/default link काढा. पण आधी custom server block नीट चालतोय हे verify करा.
4. Config टेस्ट आणि Nginx reload
प्रत्येक बदलानंतर sudo nginx -t वापरून syntax check करा. Success मिळाला की sudo systemctl reload nginx वापरून service reload करा. Reload म्हणजे restart पेक्षा safe, कारण active connections smooth handle होते.
Test fail झाल्यास error message file आणि line number दाखवतो. Missing semicolon, wrong curly bracket, bad folder path, conflicting server_name हे common issues आहेत. Fix न करता reload करू नका.
दुसरी/तिसरी साइट कशी जोडायची?
Multi-site hosting ची मजा म्हणजे पहिल्या setup नंतर process repeatable होते. site2.com साठी /var/www/site2.com/public तयार करा, /etc/nginx/sites-available/site2.com config लिहा, root/log values बदलून symbolic link तयार करा, Nginx test करा.
दुसऱ्या साइटसाठी config: server { listen 80; server_name site2.com www.site2.com; root /var/www/site2.com/public; index index.html; access_log /var/log/nginx/site2.com.access.log; error_log /var/log/nginx/site2.com.error.log; location / { try_files $uri $uri/ =404; } }
प्रत्येक साइटसाठी वेगळी log ठेवणे real-world troubleshooting साठी खूप महत्वाचे आहे. उदा. एका site मध्ये 404 errors वाढतात, दुसऱ्या site मध्ये नाही. Separate logs ने error source लगेच सापडतो. Traffic analysis, bot attacks, broken links, performance issues site-wise monitor करता येतात.
SSL आणि HTTPS सेटअप
2026 मधील SEO standards नुसार HTTPS केवळ security feature नाही, user trust आणि technical quality indicator आहे. Browsers HTTP sites unsafe म्हणून mark करतात; payment, login, forms, admin panel असलेल्या projects मध्ये SSL अनिवार्य आहे. Multi-site hosting मध्ये प्रत्येक domain साठी योग्य certificate असावा. SSL साठी SSL प्रमाणपत्रे page check करा.
Let’s Encrypt वापरत असल्यास Certbot द्वारे प्रत्येक domain साठी certificate मिळवा. उदा.: certbot --nginx -d site1.com -d www.site1.com. Nginx config auto-update होते, पण manual check करा. Wrong redirect किंवा duplicate server blocks चे issues येऊ शकतात.
HTTPS config मध्ये 80 port traffic permanent redirect 443 ला करतात. 301 redirect SEO साठी permanent signal आहे. www वापरायचे की नाही ठरवा आणि सर्व versions canonical address ला redirect करा. उदा.: https://site1.com हे canonical असल्यास www traffic दोन्ही HTTP/HTTPS वर non-www ला redirect करा. याने duplicate content risk कमी होतो.
PHP आणि WordPress साइटसाठी Nginx server blocks
Static HTML sites मध्ये config सोपा आहे; पण WordPress, Laravel किंवा custom PHP apps मध्ये PHP-FPM integration लागतो. index.php define करा आणि PHP requests socket ला redirect करा. उदा.: Ubuntu मध्ये PHP 8.3 socket path /run/php/php8.3-fpm.sock असू शकतो; version server नुसार बदलतो.
PHP site config: server { listen 80; server_name wordpress-site.com www.wordpress-site.com; root /var/www/wordpress-site.com/public; index index.php index.html; location / { try_files $uri $uri/ /index.php?$args; } location ~ php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.3-fpm.sock; } }
WordPress साठी permalink चालण्यासाठी try_files $uri $uri/ /index.php?$args महत्वाचा. xmlrpc.php access, wp-login.php rate limit, uploads folder मध्ये PHP execution block करणे – हे security measures घ्या. अनेक WordPress sites एकाच VPS वर host करत असल्यास प्रत्येक site साठी separate database/user आणि update policy ठेवा. WordPress hosting साठी WordPress होस्टिंग हे manage केलेले solution आहे.
Nginx server blocks vs Apache VirtualHost

Nginx आणि Apache वेगळ्या architecture ने एकच उद्दिष्ट साधतात: अनेक साइट्स एकाच server वर host करणे. निवड application needs, management preference आणि performance expectations नुसार ठरते.
| मूल्यांकन | Nginx Server Blocks | Apache VirtualHost |
|---|---|---|
| Performance | High concurrency आणि कमी resources मध्ये efficient. | Modules/process model नुसार resource usage जास्त. |
| Configuration | Centralized, neat config. | .htaccess ने folder-level flexibility. |
| Static File Serving | Very fast आणि efficient. | चांगलाच, पण Nginx अधिक light-weight. |
| PHP Execution | PHP-FPM ने चालतो. | mod_php किंवा PHP-FPM दोन्ही support. |
| Use Case | Reverse proxy, static files, high traffic, modern apps साठी strong. | .htaccess dependent legacy apps, shared hosting साठी convenient. |
.htaccess rules ला dependency असेल तर Apache सोपा; पण high traffic, proxy, caching, modern deployment साठी Nginx powerful आहे. काही setups मध्ये Nginx proxy, Apache backend म्हणून dual setupही वापरतात.
Security साठी Best Practices
एकाच server मध्ये अनेक साइट्स ठेवणे cost-effective आहे, पण security risk वाढतो. एका site मधील weakness दुसऱ्या sites ला प्रभावित होऊ नये म्हणून isolation आणि minimum privilege principle वापरा.
- प्रत्येक साइटसाठी वेगळा database आणि user तयार करा.
- Web root फक्त public फोल्डरमध्ये restrict करा.
- Backup, .env, .git, config, SQL files web access बाहेर ठेवा.
- SSL certificates नियमित renew करा आणि HTTPS redirect enforce करा.
- Server मध्ये UFW firewall वापरा; आवश्यक ports open ठेवा.
- Nginx आणि OS updates नियमित करा.
- प्रत्येक साइटसाठी वेगळा access_log आणि error_log ठेवा.
- Admin panels ला IP restriction किंवा extra authentication लावा.
- 777 permissions टाळा.
Security headers – X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Content-Security-Policy – project नुसार add करा. Content-Security-Policy चुकीचा configure केल्यास scripts/styles block होऊ शकतात; त्यामुळे test environment मध्ये verify करा. Security guidesसाठी वेब साइट सुरक्षा वाचा.
Performance आणि SEO Tips
Nginx server blocks फक्त hosting नव्हे, तर performance आणि SEO quality ठरवतात. Wrong redirects, bad canonical, missing gzip/brotli compression, big log files, poor caching site speed कमी करतात. Google page experience user-centric आहे; fast, secure, stable sites perform चांगला देतात.
प्रत्येक domain साठी एक canonical version ठरवा. HTTP ते HTTPS, www/non-www redirect एकच step मध्ये करा. Redirect chain: http://site.com → http://www.site.com → https://www.site.com → https://site.com अशा chain पेक्षा direct 301 redirect योग्य.
Static files साठी cache-control headers वापरा. Images, CSS, JS browser मध्ये period store करा. Frequently changing files versioning किंवा query string strategy वापरा. gzip compression HTML, CSS, JS, JSON bandwidth कमी करते. High traffic sites मध्ये microcache, FastCGI cache, CDN consider करा. CDN global access साठी CDN म्हणजे काय वाचा.
Log Management आणि Monitoring
Multi-site hosting मध्ये log management troubleshooting चा key आहे. Separate logs म्हणजे कोणत्या site मध्ये काय error आहे हे स्पष्ट होते. access_log – visitor requests, error_log – config, permission, file missing, upstream errors. 502 Bad Gateway – PHP-FPM/backend service issue; 403 Forbidden – permission/index file issue; 404 Not Found – file path/rewrite/DNS root mismatch.
Log files अनंत वाढू नयेत म्हणून logrotate config check करा. Small sites मध्ये daily/weekly rotation पुरेसे; high traffic sites मध्ये central log, metrics monitoring, alert systems वापरा. Disk full झाल्यास log write fail, database down, sites inaccessible होऊ शकतात; disk usage threshold set करा.
Common Errors आणि Quick Fixes
Nginx server blocks setup करताना काही errors सर्व projects मध्ये येतात. हे माहित असले की setup time कमी होतो.
- Domain wrong site दाखवत आहे: server_name conflicts, default server block check करा.
- 403 Forbidden: root folder, permissions, index file existence verify करा.
- 404 Not Found: root path, try_files rule तपासा.
- 502 Bad Gateway: PHP-FPM चालू आहे का, socket path योग्य आहे का check करा.
- SSL certificate wrong site ला दिसत आहे: 443 server_name आणि certificate files check करा.
- Redirect loop: HTTP-HTTPS आणि www rules simplify करा.
- Nginx reload होत नाही: sudo nginx -t output मध्ये error line fix करा.
Experienced admins चा simple checklist आहे: DNS correct का, Nginx config active का, root folder आहे का, permissions योग्य आहेत का, service test passed का, logs काय सांगतात? या sequence ने troubleshooting करा.
Production साठी Practical Checklist
Live करताना खालील checklist ने प्रत्येक site verify करा. Client projects मध्ये delivery पूर्वी हे document करा – professionalism साठी standard.
- Domain A/AAAA record योग्य IP ला point करतो.
- www/non-www version एक canonical म्हणून निवडला.
- HTTP traffic 301 redirect ने HTTPS ला जातो.
- SSL certificate valid आणि auto-renew active आहे.
- प्रत्येक site साठी unique root/log files सेट केले.
- Nginx config sudo nginx -t ने verify केला.
- Backup plan आहे, restore test केला.
- File permissions minimum privilege principle नुसार.
- Firewall मध्ये आवश्यक ports open आहेत.
- Error logs live करताना किमान 15 मिनिट monitor केले.
ही list छोटी वाटते, पण production मध्ये downtime risk फार कमी करते. SSL renew, DNS check, log monitoring हे hidden errors लवकर पकडतात.
निष्कर्ष
Nginx server blocks हे एकाच server वर अनेक साइट्स neat, secure, performant पद्धतीने host करण्याचे foundation आहे. Correct folder structure, separate config files, proper redirects, HTTPS, log separation, routine test process – multi-site management efficient करतो. Small portfolio sites ते enterprise multi-client setups पर्यंत हेच principles लागू आहेत.
नवीन project live करायचा असेल तर domain, server resources, SSL needs ठरवा; checklist नुसार Nginx config step-by-step करा. Manageable infrastructure हवे असल्यास Hostragons ची होस्टिंग पॅकेजेस, VPS सर्व्हर, SSL प्रमाणपत्रे solutions बघा आणि project साठी योग्य option निवडा.
सर्वात जास्त विचारले जाणारे प्रश्न
Nginx server blocks मध्ये किती साइट्स host करता येतात?
Technically, Nginx मध्ये एकाच serverवर अनेक साइट्स host करता येतात; limits – CPU, RAM, disk, traffic, database load, PHP-FPM capacity वर depend. Low-traffic static sites मध्ये डझनभर साइट्स शक्य; heavy WordPress/ecommerce projects मध्ये कमी साइट्स safer.
प्रत्येक साइटसाठी वेगळा SSL certificate लागतो का?
हो, प्रत्येक domain/subdomain जर HTTPS वर publish करायचा असेल तर certificate मध्ये समाविष्ट असावा. Individual certificates, SAN किंवा wildcard certificates वापरता येतील. महत्वाचे म्हणजे Nginx 443 server block मध्ये योग्य certificate files domain ला bind असावेत.
Nginx server block ने subdomain publish करता येतो का?
हो. blog.site.com किंवा panel.site.com सारख्या subdomains साठी वेगळा server_name define करा आणि वेगळी root directory किंवा backend app ला point करा. DNS मध्ये त्या subdomain साठी A/CNAME record लागतो.
sites-available आणि sites-enabled मध्ये फरक काय?
sites-available म्हणजे available configs; sites-enabled मध्ये active configs symbolic link ने जोडतात. याने sites enable/disable neat आणि systematic होते.
Wrong site उघडत असल्यास कारण काय?
Common causes: DNS wrong IP ला point, server_name mismatch, default Nginx block request catch करत आहे, 443 port SSL block mismatch. पहिले DNS record, नंतर nginx -t output, active sites-enabled links आणि access_log check करा.