Πώς να δημιουργήσετε Virtual Hosts (Server Blocks) στον Nginx σε Debian 8

12/10/2021 / Nginx
virtual-host-setup-nginx

Το Virtual Hosting είναι ένας τρόπος hosting πολλών διαφορετικών domain names σε έναν φυσικό server. Επιτρέπει το μοίρασμα των πόρων του φυσικού server, πχ. cpu, ram,  στα διάφορα domain names.

Στον Νginx χρησιμοποιείται ο όρος Server Blocks αντί για Virtual Hosts. 'Eχουν ακριβώς την ίδια σημασία, απλά για να είμαστε πιο ακριβείς, από δώ και στο εξής σε αυτό το άρθρο θα χρησιμοποιούμε τον όρο Server Block. 

 

Παρακάτω θα φτιάξουμε ένα setup για τα domain names test1.com και test2.com .

Αν ο nginx δεν είναι εγκατεστημένος στο σύστημά σας, χρησιμοποιήστε την apt -get για να το εγκαταστήσετε:

sudo apt-get update
sudo apt-get install nginx

1. Δημιουργία των directories

Αρχικά το directory  /usr/share/nginx/html  είναι το default του web server. Παρ' όλα αυτά, είναι ευκολότερο να δουλεύουμε στο directory /var/www/html οπότε θα χρησιμοποιήσουμε αυτό.

Εμείς θέλουμε να δημιουργήσουμε ένα directory για το κάθε domain name, και για κάθε domain name έναν φάκελο που θα έχει τα αρχεία του: 

sudo mkdir -p /var/www/test1.com/public_html
sudo mkdir -p /var/www/test2.com/public_html

Τώρα δημιουργήσαμε αυτούς τους φακέλους, αλλά μόνο ο χρήστης root έχει δικαιώματα. Για να δώσουμε δικαιώματα στον απλό χρήστη χρησιμοποιούμε τις εντολές:

sudo chown -R $USER:$USER /var/www/test1.com/public_html
sudo chown -R $USER:$USER /var/www/test2.com/public_html

Όπου user το όνομα του χρήστη στον οποίο θέλουμε να δώσουμε δικαιώματα.

2. Δημιουργία demo σελίδας σε κάθε Server Block

Αφού τα directories είναι έτοιμα, θα βάλουμε στον φάκελο του κάθε virtual host μια πολύ απλή σελίδα index.html . Αυτό θα βοηθήσει αργότερα, όταν θα χρειαστούμε να τεστάρουμε τους virtual hosts.

sudo vi /var/www/test1.com/public_html/index.html 

Το index.html θα είναι ένα πολύ απλό html page που απλά θα δείχνει ότι είμαστε στο σωστό directory.

/var/www/example.com/public_html/index.html


 
   Welcome to test1.com!
 
 
   

Success! The test1.com virtual host is working!


 

Επαναλαμβάνουμε ακριβώς την ίδια διαδικασία και για το domain name test2 .

sudo vi /var/www/test2.com/public_html/index.html

/var/www/example.com/public_html/index.html


 
   Welcome to test2.com!
 
 
   

Success! The test2.com virtual host is working!


 

3. Δημιουργία νέων Server Block files

Τα Server Block Files προσδιορίζουν τις ρυθμίσεις λειτουργίας των server block μας και ρυθμίζουν πώς θα απαντά ο server στα αιτήματα που του γίνονται.

Ο Nginx έχει ένα default server block file που λέγεται default και μπορούμε να το χρησιμοποιήσουμε για να φτιάξουμε τα δικα μας αρχεία.

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/test1.com

sudo vi/etc/nginx/sites-available/test1.com

Με κάποιες μικρές διαφορές το αρχείο πρέπει να έχει την παρακάτω μορφή:

server {
   listen 80 default_server;
   listen [::]:80 default_server ipv6only=on;

   root /usr/share/nginx/html;
   index index.html index.htm;

   server_name localhost;

   location / {
       try_files $uri $uri/ =404;
   }
}

Η πρώτη αλλαγή που πρέπει να κάνουμε είναι στο πεδίο root, δηλαδή να αλλάξουμε το directory:

root /var/www/example.com/html;

‘Επειτα, αλλάζουμε το server_name και βάζουμε το δικό μας domain:

server_name test1.com www.test1.com;

Αποθηκεύουμε το αρχείο. Φτιάξαμε το Server Block για το domain name test1. Για το domain name test2 θα επαναλάβουμε ακριβώς την ίδια διαδικασία, με μια αλλαγή!

Στον Nginx μόνο ένα file μπορεί να είναι ορισμένο ως default_server . Για αυτό, στο δεύτερο domain την γραμμή:

listen [::]:80 default_server ipv6only=on;

Θα την αλλάξουμε ώστε να είναι κάπως έτσι :

listen [::]:80;

Αν θέλουμε ο default server να είναι ο test2, μπορούμε απλά να τα κάνουμε ανάποδα, χωρίς να έχει ιδιαίτερη σημασία. Το μόνο που είναι υποχρεωτικό, είναι ότι μόνο ένα domain name πρέπει να είναι ορισμένο ως default.

4. Ενεργοποίηση των Server Block files

Ως τώρα έχουμε δημιουργήσει τα server block files σύμφωνα με τις ανάγκες μας, αλλά ο nginx δεν πρόκειται να τα χρησιμοποιήσει, αν δεν τα ενεργοποιήσουμε πρώτα.

Για να τα ενεργοποιήσουμε πρέπει να φτιάξουμε links στο directory sites-enabled, το οποίο ο Nginx διαβάζει, κάθε φορά που φορτώνει.

Για να φτιάξουμε αυτά τα link, γράφουμε:

sudo ln -s /etc/nginx/sites-available/test1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/test2.com /etc/nginx/sites-enabled/

Για να δουλέψουν τα link, πρέπει να κάνουμε πρώτα disable το default server block file.

sudo rm /etc/nginx/sites-enabled/default

Επίσης, πρέπει ακόμα να κάνουμε μια μικρή αλλαγή.

Ανοίγουμε το αρχείο:

sudo vi /etc/nginx/nginx.conf

Πρέπει να βρούμε την γραμμή

server_names_hash_bucket_size 64;

Και να βγάλουμε το σύμβολο $ στην αρχή της γραμμής.

Τέλος, κάνουμε reload τον Nginx και είμαστε έτοιμοι!

sudo service nginx restart

5. Test των αποτελεσμάτων

Για να είμαστε σίγουροι ότι δεν κάναμε κάποιο λάθος, θα ανοίξουμε εναν browser και θα δοκιμάσουμε να μπούμε στα 2 site που δημιουργήσαμε πριν:

http://test1.com

http://test2.com

Αν δούμε το μήνυμα Sucess!The test.com virtual host is working και στις 2 σελίδες, όλα έγιναν σωστά και είμαστε έτοιμοι!

 

 

 

Στην Cloud Concept στόχο αποτελεί η αδιάλειπτη τεχνική υποστήριξη των αναγκών σας, η προσφορά managed υπηρεσιών υψηλού επιπέδου και η παροχή πρόσβασης σε χρήσιμες προτάσεις για την αποδοτική διαχείριση των δεδομένων σας.

 

Μάθετε περισσότερα για τις υπηρεσίες μας εδώ.

Ακολουθήστε μας σε LinkedInFacebook & Instagram για να μένετε ενημερωμένοι!

ΣΥΝΔΕΣΗ

Αίτηση επικοινωνίας

ΠΑΝΩ