Τα Nginx server blocks (γνωστά και ως virtual hosts) επιτρέπουν την φιλοξενία πολλών domain ή ιστοτόπων σε μια μόνο εγκατάσταση Nginx, με ξεχωριστή διαμόρφωση για κάθε site. Για παράδειγμα, στο ίδιο VPS μπορείτε να ορίσετε διαφορετικούς root φακέλους, αρχεία logs, SSL πιστοποιητικά και PHP ρυθμίσεις για example.com, blog.example.com και δεύτερο-site.gr. Η λύση συνοψίζεται ως εξής: δημιουργείτε ξεχωριστό φάκελο για κάθε site, το domain δείχνει με DNS στον IP του server, γράφετε ξεχωριστό server block στο /etc/nginx/sites-available, το ενεργοποιείτε στο sites-enabled με symlink, κάνετε έλεγχο της διαμόρφωσης και επανεκκινείτε το Nginx.
Σε αυτόν τον οδηγό θα δούμε τη διαδικασία φιλοξενίας πολλών sites με Nginx server blocks, κατάλληλη για παραγωγικό περιβάλλον. Στόχος δεν είναι απλώς μια λειτουργική δομή, αλλά μια διαχειρίσιμη, ασφαλής, γρήγορη, backup-friendly και επεκτάσιμη λύση. Ιδιαίτερα χρήσιμο για agencies, developers, e-shops, επιχειρήσεις με πολλές brand, και sysadmins με πολλαπλά projects στον ίδιο server. Αν δεν διαθέτετε ακόμα server, δείτε τα VPS διακομιστής για επιλογή πόρων και Πιστοποίηση Τομέα για διαχείριση domains.
Τι Είναι τα Nginx Server Blocks;
Τα Nginx server blocks είναι τμήματα της διαμόρφωσης που ορίζονται ως server blocks και καθορίζουν σε ποιο site θα κατευθυνθεί το αίτημα HTTP ή HTTPS, ανάλογα με το server_name. Είναι αντίστοιχα με το Apache VirtualHost. Όταν ένας επισκέπτης γράψει ένα domain στον browser, το DNS το μεταφράζει στον IP του server. Το Nginx ελέγχει το Host header και επιλέγει το server block που ταιριάζει.
Έτσι, με τον ίδιο IP και server μπορείτε να φιλοξενήσετε δεκάδες sites. Για κάθε site μπορείτε να ορίσετε διαφορετικό root directory, access log, error log, redirect, SSL certificate, cache policy και security rule. Πχ το εταιρικό σας site στο /var/www/etairiko/public, το blog στο /var/www/blog/public, το staging στο /var/www/staging/public.
Η αρχιτεκτονική του Nginx είναι πολύ αποδοτική, διαχειρίζεται πολλαπλές ταυτόχρονες συνδέσεις με χαμηλή κατανάλωση πόρων. Γι’ αυτό χρησιμοποιείται συχνά σε shared hosting, VPS, cloud servers και high-traffic εφαρμογές. Για ομαλή λειτουργία πολλών sites, πρέπει να σχεδιαστεί σωστά η δομή φακέλων, τα DNS, η εγκατάσταση SSL και η διαχείριση logs.
Πότε Χρησιμοποιούνται τα Nginx Server Blocks;
Τα server blocks είναι απαραίτητα όταν πρέπει να διαχειριστείτε πολλαπλά web assets στον ίδιο server. Μπορεί να πρόκειται για δύο εταιρικά sites ή δεκάδες projects πελατών, subdomains ή microservices. Κρίσιμο είναι κάθε project να είναι λογικά διαχωρισμένο.
- Για φιλοξενία πολλών domains στο ίδιο VPS.
- Για redirect του www και non-www σε ένα canonical address.
- Για σύνδεση subdomains σε διαφορετικούς φακέλους ή εφαρμογές.
- Για ορισμό ξεχωριστών SSL και security policies ανά site.
- Για monitoring των projects με ξεχωριστά logs.
- Για χρήση διαφορετικών εφαρμογών (Laravel, WordPress, HTML, Node.js) στον ίδιο server.
Ένα digital agency μπορεί τεχνικά να φιλοξενήσει 8 μικρά corporate sites σε ένα VPS με 4GB RAM. Όμως πρέπει να υπολογίζονται traffic, disk usage, PHP processes, database load και backup frequency. Αν τα projects έχουν υψηλή επισκεψιμότητα ή απαιτείται isolation, προτιμήστε ισχυρότερο VPS, cloud server ή managed hosting. Δείτε Web Hosting και Επαγγελματικό Hosting για σύγκριση επιλογών.
Προαπαιτούμενα για την Εκκίνηση
Ο οδηγός βασίζεται σε Ubuntu ή Debian server. Οι εντολές μπορεί να διαφέρουν σε άλλες διανομές, αλλά η λογική είναι ίδια. Πριν κάνετε αλλαγές σε παραγωγικό περιβάλλον, πάρτε backup! Λάθος διαμόρφωση στο Nginx μπορεί να κάνει όλα τα sites προσωρινά μη προσβάσιμα.
Τεχνικές προετοιμασίες
- Λογαριασμός Linux με root ή sudo δικαιώματα.
- Εγκατεστημένο και ενεργό Nginx.
- Τουλάχιστον ένα domain να δείχνει στον IP του server.
- Ανοιχτές οι θύρες 80 και 443 στο firewall.
- Οργανωμένη δομή φακέλων site files.
- Έγκυρο SSL certificate ή χρήση δωρεάν Let’s Encrypt.
- Για PHP sites, εγκατάσταση PHP-FPM.
Στο DNS, το A record δείχνει το domain σε IPv4, AAAA σε IPv6. Για subdomains όπως www, χρησιμοποιείται CNAME ή A record. Η διάδοση DNS διαρκεί από λίγα λεπτά έως 24 ώρες. Πρώτα ετοιμάστε τα DNS records, μετά προχωρήστε στις Nginx διαμορφώσεις για τα server blocks.
Προτεινόμενη Δομή Φακέλων
Συχνό λάθος σε multi-site hosting είναι να μπαίνουν όλα τα αρχεία σε έναν κοινό φάκελο. Αυτό φαίνεται εύκολο στην αρχή, αλλά δυσκολεύει το maintenance, backup και troubleshooting. Καλύτερη πρακτική: ξεχωριστός root φάκελος ανά domain και υποφακέλους public, logs, backups.
Πχ: /var/www/site1.gr/public, /var/www/site1.gr/logs, /var/www/site2.gr/public, /var/www/site2.gr/logs. Το Nginx root πρέπει να δείχνει στον public φάκελο, ώστε τα application files, .env, backups να μην είναι προσβάσιμα από το web.
Για δοκιμή, βάλτε ένα απλό index.html σε κάθε φάκελο με το όνομα του site για γρήγορο verification του server block. Σε production, ownership των φακέλων είναι συνήθως στον χρήστη www-data ή κάποιον deployment user. Πολλές φορές, permissions 755 για folders και 644 για αρχεία είναι αρκετά ασφαλείς. Για εφαρμογές που απαιτούν write access (πχ WordPress uploads), αξιολογήστε ξεχωριστά.
Βήμα-Βήμα Δημιουργία Nginx Server Block
Τα παρακάτω βήματα αφορούν το site1.gr. Επαναλάβετε την ίδια διαδικασία για κάθε site. Σημαντικό: για κάθε site, ορίστε μοναδικό server_name, root και log files.
1. Δημιουργία φακέλου site
Πρώτα δημιουργείτε τον φάκελο που θα φιλοξενεί τα web files. Πχ: sudo mkdir -p /var/www/site1.gr/public. Για testing, δημιουργήστε /var/www/site1.gr/public/index.html με περιεχόμενο "Αυτό είναι η δοκιμαστική σελίδα του site1.gr".
Για σωστό ownership: sudo chown -R www-data:www-data /var/www/site1.gr. Αν κάνετε deployments με άλλον user, ρυθμίστε το group αναλόγως. Αποφύγετε permissions 777, τα οποία είναι κίνδυνος για uploads και πιθανές επιθέσεις.
2. Δημιουργία server block configuration
Η πρακτική στο Nginx είναι να κρατάτε τα inactive configurations στο /etc/nginx/sites-available και να τα ενεργοποιείτε με symlink στο /etc/nginx/sites-enabled. Πχ /etc/nginx/sites-available/site1.gr.
Ένα απλό HTTP block:
server {
listen 80;
server_name site1.gr www.site1.gr;
root /var/www/site1.gr/public;
index index.html index.htm;
access_log /var/log/nginx/site1.gr.access.log;
error_log /var/log/nginx/site1.gr.error.log;
location / {
try_files $uri $uri/ =404;
}
}
Στο παραπάνω, το listen 80 ακούει HTTP, το server_name ορίζει τα domains, το root δείχνει στον φάκελο, το index καθορίζει το default αρχείο, το try_files επιστρέφει 404 αν δεν βρεθεί αρχείο. Για static sites, αυτή η δομή είναι αρκετή.
3. Ενεργοποίηση του site
Για ενεργοποίηση, δημιουργείτε symlink:
sudo ln -s /etc/nginx/sites-available/site1.gr /etc/nginx/sites-enabled/site1.grΑυτό είναι πιο υγιές από το copy, γιατί έχετε κεντρικό config file. Όταν κάνετε αλλαγές, το symlink παραμένει ενημερωμένο.
Αν δεν θέλετε το default Nginx site να εμφανίζεται, αφαιρέστε το symlink του default. Πριν το κάνετε, βεβαιωθείτε ότι το δικό σας server block δουλεύει σωστά.
4. Έλεγχος και reload του Nginx
Με κάθε αλλαγή, κάντε syntax test:
sudo nginx -tΑν όλα είναι ΟΚ, επανεκκινείτε το Nginx (χωρίς διακοπή συνδέσεων):
sudo systemctl reload nginxΤο reload είναι προτιμότερο από restart, γιατί διαχειρίζεται τις συνδέσεις ομαλά.
Σε περίπτωση αποτυχίας, το error message δείχνει το αρχείο και τη γραμμή. Συχνά προβλήματα: λάθος comma, brackets, path ή server_name conflict. Μην κάνετε reload αν υπάρχουν syntax errors.
Προσθήκη Δεύτερου και Τρίτου Site
Το καλό με το multi-site είναι ότι μετά την πρώτη σωστή εγκατάσταση, η διαδικασία επαναλαμβάνεται εύκολα. Για site2.gr, δημιουργείτε /var/www/site2.gr/public, γράφετε /etc/nginx/sites-available/site2.gr, αλλάζετε τα root και logs, κάνετε symlink και testing.
Ένα απλό block:
server {
listen 80;
server_name site2.gr www.site2.gr;
root /var/www/site2.gr/public;
index index.html;
access_log /var/log/nginx/site2.gr.access.log;
error_log /var/log/nginx/site2.gr.error.log;
location / {
try_files $uri $uri/ =404;
}
}
Ξεχωριστά logs ανά site είναι ανεκτίμητα. Έτσι εντοπίζετε αμέσως πού υπάρχουν 404 errors, traffic spikes, bot attacks ή performance issues.
Ρύθμιση SSL και HTTPS
Σύμφωνα με τα SEO standards του 2026, το HTTPS δεν είναι απλά θέμα ασφάλειας αλλά δείκτης ποιότητας και εμπιστοσύνης. Τα browsers μαρκάρουν HTTP sites ως μη ασφαλή. Για sites με πληρωμές, φόρμες ή admin panel, το SSL είναι απαραίτητο. Για τις SSL ανάγκες σας, δείτε τη σελίδα Πιστοποιητικά SSL μέσω Hostragons.
Με Let’s Encrypt και Certbot, μπορείτε να πάρετε πιστοποιητικό για κάθε domain:
certbot --nginx -d site1.gr -d www.site1.grΤο Certbot ανιχνεύει το Nginx config και προσθέτει αυτόματα HTTPS block, αλλά πάντα ελέγξτε για λάθος redirects ή διπλά blocks.
Συνήθως, η κίνηση στη θύρα 80 (HTTP) γίνεται permanent redirect στη 443 (HTTPS). Το 301 redirect δηλώνει μόνιμη επιλογή για το SEO. Επιλέξτε αν θέλετε www ή non-www ως canonical και ενώστε όλα τα variations σε ένα. Αν θέλετε πχ https://site1.gr, κάντε redirect όλα τα www (HTTP και HTTPS) στο non-www. Έτσι μειώνετε το risk για duplicate content.
Nginx Server Blocks για PHP και WordPress
Για static HTML sites η διαμόρφωση είναι απλή. Σε WordPress, Laravel ή custom PHP, χρειάζεται integration με PHP-FPM. Ορίζετε το index.php και τα PHP requests πάνε στο κατάλληλο socket. Πχ σε Ubuntu με PHP 8.3, το socket είναι /run/php/php8.3-fpm.sock (μπορεί να διαφέρει).
Παράδειγμα config:
server {
listen 80;
server_name wordpress-site.gr www.wordpress-site.gr;
root /var/www/wordpress-site.gr/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, το try_files $uri $uri/ /index.php?$args είναι απαραίτητο για permalinks. Εξετάστε επίσης security πρακτικές όπως block στο xmlrpc.php, rate limiting στο wp-login.php και απενεργοποίηση PHP στα uploads. Για περισσότερα sites, δημιουργήστε ξεχωριστές βάσεις, χρήστες και εφαρμόστε regular updates. Για πιο εύκολη διαχείριση WordPress sites, δείτε WordPress hosting.
Σύγκριση Nginx Server Blocks και Apache VirtualHost

Nginx και Apache έχουν τον ίδιο στόχο με διαφορετική αρχιτεκτονική. Και οι δύο υποστηρίζουν multi-site hosting. Η επιλογή εξαρτάται από τις απαιτήσεις της εφαρμογής, τη διαχείριση και την απόδοση.
| Κριτήριο | Nginx Server Blocks | Apache VirtualHost |
|---|---|---|
| Απόδοση | Εξαιρετική διαχείριση πολλαπλών συνδέσεων με χαμηλή κατανάλωση πόρων. | Ανάλογα με modules και process model, καταναλώνει περισσότερους πόρους. |
| Διαμόρφωση | Κεντρική και απλή διαχείριση. | .htaccess προσφέρει ευελιξία ανά φάκελο. |
| Static files | Πολύ γρήγορο και αποδοτικό. | Καλές επιδόσεις, αλλά συνήθως Nginx είναι πιο ελαφρύ. |
| PHP | Μέσω PHP-FPM. | mod_php ή PHP-FPM. |
| Χρήση | Ιδανικό για reverse proxy, static files, high traffic, σύγχρονες εφαρμογές. | Πρακτικό για legacy apps με .htaccess και shared hosting. |
Αν η εφαρμογή σας βασίζεται σε .htaccess, ίσως είναι πιο εύκολο το Apache. Για high-traffic, proxy, caching και σύγχρονες τεχνολογίες, το Nginx είναι ισχυρή επιλογή. Σε κάποιες υποδομές, Nginx λειτουργεί ως reverse proxy και Apache ως backend.
Καλές Πρακτικές Ασφαλείας
Η φιλοξενία πολλών sites στον ίδιο server μειώνει το κόστος, αλλά αυξάνει την ευθύνη ασφάλειας. Για να μην επηρεάζονται τα sites μεταξύ τους, εφαρμόστε isolation και principle of least privilege.
- Δημιουργήστε ξεχωριστή βάση και χρήστη για κάθε site.
- Περιορίστε το web root στο public φάκελο.
- Κρατήστε backups, .env, .git, config, SQL έξω από το web root.
- Ανανεώνετε τα SSL και κάντε υποχρεωτικό το HTTPS redirect.
- Χρησιμοποιήστε UFW ή άλλο firewall - ανοίξτε μόνο τις απαραίτητες θύρες.
- Εφαρμόζετε τακτικά updates σε Nginx και λειτουργικό.
- Κρατήστε ξεχωριστά access_log και error_log για κάθε site.
- Προσθέστε IP restrictions ή δεύτερο authentication στα admin panels.
- Αποφύγετε permissions 777.
Προσθέστε headers όπως X-Frame-Options, X-Content-Type-Options, Referrer-Policy και Content-Security-Policy όπου ταιριάζει. Προσοχή στο Content-Security-Policy – αν εφαρμοστεί λάθος, μπορεί να μπλοκάρει scripts/styles. Δοκιμάστε πρώτα σε staging. Για περισσότερη ασφάλεια, δείτε Ασφάλεια ιστοσελίδας.
Tips για Απόδοση και SEO
Τα server blocks επηρεάζουν όχι μόνο τη λειτουργία αλλά και την απόδοση και το SEO. Λανθασμένα redirects, canonical επιλογές, έλλειψη gzip/brotli compression, μεγάλα log files και ανεπαρκές cache μειώνουν την ταχύτητα. Το Google αξιολογεί τα sites με βάση την εμπειρία χρήστη – γρήγορα, ασφαλή και σταθερά sites έχουν καλύτερη απόδοση.
Ορίστε ένα canonical version για κάθε domain. Κάντε redirect από HTTP σε HTTPS, www σε non-www (ή αντίστροφα) με ένα βήμα. Αποφύγετε redirect chains: πχ http://site.gr → http://www.site.gr → https://www.site.gr → https://site.gr. Προτιμήστε ένα 301 προς τον τελικό στόχο.
Για static files, χρησιμοποιήστε cache-control headers. Εικόνες, CSS, JS μπορούν να αποθηκεύονται στον browser για συγκεκριμένο διάστημα. Για συχνά αλλαγές, υιοθετήστε versioning ή query strings. Το gzip compression μειώνει bandwidth για HTML, CSS, JS, JSON. Σε high-traffic sites, εξετάστε microcache, FastCGI cache ή CDN. Για CDN και global access δείτε Τι είναι το CDN.
Διαχείριση Logs και Παρακολούθηση
Η διαχείριση logs είναι κλειδί για troubleshooting σε multi-site. Τα ξεχωριστά αρχεία logs δείχνουν ποιες ιστοσελίδες έχουν προβλήματα. Το access_log καταγράφει τα requests των επισκεπτών, το error_log καταγράφει configuration, permissions, missing files και upstream errors. Το 502 Bad Gateway συνήθως σχετίζεται με PHP-FPM ή backend service. Το 403 Forbidden μπορεί να είναι πρόβλημα permissions ή index file. Το 404 Not Found δείχνει path, rewrite ή λάθος root.
Για να μην μεγαλώνουν τα logs απεριόριστα, εφαρμόστε logrotate. Σε μικρά projects, daily/weekly rotation αρκεί. Σε μεγάλα sites, εφαρμόστε central log collection, metric monitoring και alerts. Αν γεμίσει ο δίσκος, το Nginx δεν μπορεί να γράψει logs, η database σταματά και sites δεν είναι προσβάσιμα. Ορίστε thresholds για disk usage ως πρακτικό μέτρο.
Συχνά Λάθη και Γρήγορες Λύσεις
Κάθε project με Nginx server blocks θα συναντήσει κάποια κοινά λάθη. Η γνώση τους επιταχύνει το setup.
- Το domain ανοίγει λάθος site: ελέγξτε conflicts στο server_name και το default block.
- 403 Forbidden: ελέγξτε το root directory, permissions και το index file.
- 404 Not Found: ελέγξτε το root path και το try_files rule.
- 502 Bad Gateway: βεβαιωθείτε ότι το PHP-FPM service τρέχει και το socket είναι σωστό.
- SSL certificate ανοίγει λάθος site: ελέγξτε το server_name στο 443 και τα cert files.
- Redirect loop: απλοποιήστε τα redirect rules για HTTP-HTTPS και www.
- Nginx reload αποτυγχάνει: διορθώστε syntax error όπως δείχνει το nginx -t output.
Έμπειροι admins ακολουθούν checklist: DNS OK, Nginx config ενεργό, root folder υπάρχει, permissions σωστές, service test OK, logs δείχνουν τι; Με αυτή τη σειρά βρίσκετε λύση χωρίς πανικό.
Checklist για Παραγωγικό Περιβάλλον
Πριν βάλετε live ένα site, επιβεβαιώστε τα παρακάτω. Σε projects πελατών, τεκμηριώστε το checklist για επαγγελματικό standard.
- Το domain (A/AAAA record) δείχνει σωστά στον IP.
- Επιλέχθηκε canonical www ή non-www έκδοση.
- Η κίνηση HTTP redirect με 301 σε HTTPS.
- SSL certificate έγκυρο και auto-renew ενεργό.
- Ορίστηκε ξεχωριστό root και log file ανά site.
- Η διαμόρφωση Nginx πέρασε το nginx -t.
- Υπάρχει backup plan και έγινε restore test.
- Οι permissions ακολουθούν least privilege.
- Firewall ανοίγει μόνο τις απαραίτητες θύρες.
- Μετά το live, παρακολουθούνται τα error logs για τουλάχιστον 15 λεπτά.
Αυτή η λίστα φαίνεται μικρή αλλά μειώνει σημαντικά το downtime. Το SSL renewal, DNS check και log monitoring προλαβαίνουν πολλά αόρατα λάθη.
Συμπέρασμα
Τα Nginx server blocks είναι βασικός τρόπος για οργανωμένη, ασφαλή και αποδοτική φιλοξενία πολλών sites σε έναν server. Με σωστή δομή φακέλων, ξεχωριστά config files, redirects, χρήση HTTPS, log separation και τακτικό testing, η διαχείριση πολλών ιστοτόπων γίνεται εύκολη. Τα ίδια principles ισχύουν από μικρό portfolio έως multi-client projects.
Για νέο project, ξεκαθαρίστε domain, server resources και SSL, μετά στήστε το Nginx με βάση το checklist. Για managed solutions, δείτε τα Πακέτα Hosting, VPS διακομιστής και Πιστοποιητικά SSL του Hostragons για κατάλληλη εκκίνηση.
Συχνές Ερωτήσεις
Πόσα sites μπορώ να φιλοξενήσω με Nginx server blocks;
Τεχνικά, μπορείτε να φιλοξενήσετε πολλά sites στον ίδιο server με Nginx. Το όριο εξαρτάται από CPU, RAM, disk, traffic, database load και PHP-FPM capacity. Για μικρά static sites, δεκάδες sites είναι εφικτά. Σε WordPress/e-shop με έντονη κίνηση, λιγότερα sites είναι πιο ασφαλή.
Χρειάζεται ξεχωριστό SSL certificate για κάθε site;
Ναι, κάθε domain ή subdomain που θα είναι προσβάσιμο με HTTPS πρέπει να καλύπτεται από πιστοποιητικό. Μπορείτε να χρησιμοποιήσετε μεμονωμένα certificates, SAN ή wildcard. Σημαντικό είναι το σωστό binding των cert files στο σωστό server_name στο 443 block.
Μπορώ να δημοσιεύσω subdomain με Nginx server block;
Βεβαίως. Για subdomains όπως blog.site.gr ή panel.site.gr, ορίζετε ξεχωριστό server_name και root, ή το κατευθύνετε σε άλλη εφαρμογή. Στο DNS, δημιουργήστε A ή CNAME record για το subdomain.
Ποια η διαφορά sites-available και sites-enabled;
Το sites-available είναι ο φάκελος με όλα τα config files. Το sites-enabled περιέχει symlinks των ενεργών configs. Έτσι διαχειρίζεστε εύκολα ποια sites είναι live και ποια όχι.
Ανοίγει λάθος site – πού είναι το πρόβλημα;
Συχνές αιτίες: DNS δείχνει λάθος IP, λάθος server_name, το default block παίρνει το request, ή λάθος SSL block στο 443. Ελέγξτε DNS records, nginx -t output, symlinks στο sites-enabled και τα access_log ανά site.