CLOUD CONCEPT
Νερατζιωτίσσης 15, Μαρούσι, Αθήνα, 15124, Αττική
+30 211 8005 401
info@c2.gr
Το 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
Αρχικά το 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 το όνομα του χρήστη στον οποίο θέλουμε να δώσουμε δικαιώματα.
Αφού τα 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
Επαναλαμβάνουμε ακριβώς την ίδια διαδικασία και για το domain name test2 .
sudo vi /var/www/test2.com/public_html/index.html
/var/www/example.com/public_html/index.html
Τα 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.
Ως τώρα έχουμε δημιουργήσει τα 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
Για να είμαστε σίγουροι ότι δεν κάναμε κάποιο λάθος, θα ανοίξουμε εναν browser και θα δοκιμάσουμε να μπούμε στα 2 site που δημιουργήσαμε πριν:
http://test1.com
http://test2.com
Αν δούμε το μήνυμα Sucess!The test.com virtual host is working και στις 2 σελίδες, όλα έγιναν σωστά και είμαστε έτοιμοι!
Στην Cloud Concept στόχο αποτελεί η αδιάλειπτη τεχνική υποστήριξη των αναγκών σας, η προσφορά managed υπηρεσιών υψηλού επιπέδου και η παροχή πρόσβασης σε χρήσιμες προτάσεις για την αποδοτική διαχείριση των δεδομένων σας.
Μάθετε περισσότερα για τις υπηρεσίες μας εδώ.
Ακολουθήστε μας σε LinkedIn, Facebook & Instagram για να μένετε ενημερωμένοι!