Πώς να ρυθμίσετε εικονικούς κεντρικούς υπολογιστές βάσει ονόματος και IP (μπλοκ διακομιστών) με το NGINX


Σε σχετικά σύντομο χρονικό διάστημα από τότε που αναπτύχθηκε και έγινε διαθέσιμο (λίγο πάνω από 10 χρόνια), το Nginx γνώρισε μια σταθερή και σταθερή ανάπτυξη μεταξύ των διακομιστών ιστού λόγω της υψηλής απόδοσης και της χαμηλής χρήσης μνήμης.

Δεδομένου ότι το Nginx είναι Ελεύθερο Λογισμικό Ανοιχτού Κώδικα, έχει υιοθετηθεί από χιλιάδες διαχειριστές διακομιστών ιστού σε όλο τον κόσμο, όχι μόνο σε διακομιστές Linux και *nix, αλλά και σε Microsoft Windows.

Για όσους από εμάς έχουμε συνηθίσει περισσότερο στο Apache, το Nginx μπορεί να έχει μια κάπως απότομη καμπύλη εκμάθησης (τουλάχιστον αυτή ήταν η περίπτωσή μου), αλλά σίγουρα αποδίδει όταν δημιουργήσετε ένα ζευγάρι των τοποθεσιών και αρχίστε να βλέπετε τα στατιστικά στοιχεία επισκεψιμότητας και χρήσης πόρων.

Σε αυτό το άρθρο θα εξηγήσουμε πώς να χρησιμοποιήσετε το Nginx για να ρυθμίσετε την εικονική φιλοξενία βασισμένη σε όνομα και βασισμένη σε ip στο CentOS/RHEL 7 διακομιστές και Debian 8 και παράγωγα, ξεκινώντας από το Ubuntu 15.04 και τα spin-off του.

Το σενάριο δοκιμών μας για αυτό το άρθρο είναι το εξής:

  1. Λειτουργικό σύστημα: Διακομιστής Debian 8 Jessie [IP 192.168.0.25]
  2. Gateway: Router [IP 192.168.0.1]
  3. Διακομιστής Ιστού: Nginx 1.6.2-5
  4. Dummy Domains: www.tecmintlovesnginx.com και www.nginxmeanspower.com.

Εγκατάσταση του Nginx Web Server

Εάν δεν το έχετε κάνει ήδη, εγκαταστήστε το Nginx πριν προχωρήσετε περαιτέρω. Εάν χρειάζεστε βοήθεια για να ξεκινήσετε, μια γρήγορη αναζήτηση για το nginx σε αυτόν τον ιστότοπο θα επιστρέψει πολλά άρθρα σχετικά με αυτό το θέμα. Κάντε κλικ στο εικονίδιο του μεγεθυντικού φακού στο επάνω μέρος αυτής της σελίδας και αναζητήστε τη λέξη-κλειδί nginx. Εάν δεν ξέρετε πώς να αναζητάτε άρθρα σε αυτόν τον ιστότοπο, μην ανησυχείτε εδώ, έχουμε προσθέσει συνδέσμους στα άρθρα του nginx, απλώς μεταβείτε και εγκαταστήστε το σύμφωνα με τις αντίστοιχες διανομές Linux.

  1. Εγκατάσταση και μεταγλώττιση του Nginx από πηγές στο RHEL/CentOS 7
  2. Εγκαταστήστε τον διακομιστή Web Nginx στο Debian 8
  3. Εγκαταστήστε το Nginx με MariaDB και PHP/PHP-FPM στο Fedora 23
  4. Εγκατάσταση διακομιστή Web Nginx σε διακομιστή/επιφάνεια εργασίας Ubuntu 15.10
  5. Κατάλογοι ιστοτόπων Nginx για προστασία με κωδικό πρόσβασης

Στη συνέχεια, ετοιμαστείτε να συνεχίσετε με το υπόλοιπο αυτού του σεμιναρίου.

Δημιουργία εικονικών κεντρικών υπολογιστών βάσει ονόματος στο Nginx

Όπως είμαι βέβαιος ότι γνωρίζετε ήδη, ένας εικονικός οικοδεσπότης είναι ένας ιστότοπος που εξυπηρετείται από την Nginx σε ένα μόνο cloud VPS ή σε φυσικό διακομιστή. Ωστόσο, στα έγγραφα του Nginx θα βρείτε τον όρο \μπλοκ διακομιστή\, αλλά βασικά είναι το ίδιο πράγμα που λέγεται με διαφορετικά ονόματα.

Το πρώτο βήμα για τη ρύθμιση εικονικών κεντρικών υπολογιστών είναι να δημιουργήσετε ένα ή περισσότερα μπλοκ διακομιστή (στην περίπτωσή μας θα δημιουργήσουμε δύο, ένα για κάθε εικονικό τομέα) στο κύριο αρχείο διαμόρφωσης (/etc/nginx/nginx.conf) ή μέσα στο /etc/nginx/sites-available.

Παρόλο που το όνομα των αρχείων διαμόρφωσης σε αυτόν τον κατάλογο (sites-available) μπορεί να οριστεί σε ό,τι θέλετε, είναι καλή ιδέα να χρησιμοποιήσετε το όνομα των τομέων και επιπλέον επιλέξαμε να προσθέσουμε επέκταση .conf για να υποδείξετε ότι πρόκειται για αρχεία διαμόρφωσης.

Αυτά τα μπλοκ διακομιστή μπορεί να είναι σχετικά πολύπλοκα, αλλά στη βασική τους μορφή αποτελούνται από το ακόλουθο περιεχόμενο:

Στο /etc/nginx/sites-available/tecmintlovesnginx.com.conf:

server {  
    listen       80;  
    server_name  tecmintlovesnginx.com www.tecmintlovesnginx.com;
    access_log  /var/www/logs/tecmintlovesnginx.access.log;  
    error_log  /var/www/logs/tecmintlovesnginx.error.log error; 
        root   /var/www/tecmintlovesnginx.com/public_html;  
        index  index.html index.htm;  
}

Στο /etc/nginx/sites-available/nginxmeanspower.com.conf:

server {  
    listen       80;  
    server_name  nginxmeanspower.com www.nginxmeanspower.com;
    access_log  /var/www/logs/nginxmeanspower.access.log;  
    error_log  /var/www/logs/nginxmeanspower.error.log error;
    root   /var/www/nginxmeanspower.com/public_html;  
    index  index.html index.htm;  
}

Μπορείτε να χρησιμοποιήσετε τα παραπάνω μπλοκ για να ξεκινήσετε τη ρύθμιση των εικονικών κεντρικών υπολογιστών σας ή μπορείτε να δημιουργήσετε τα αρχεία με τον βασικό σκελετό από το /etc/nginx/sites-available/default (Debian ) ή /etc/nginx/nginx.conf.default (CentOS).

Μετά την αντιγραφή, αλλάξτε τα δικαιώματα και την ιδιοκτησία τους:

# chmod 660  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
# chmod 660  /etc/nginx/sites-available/nginxmeanspower.com.conf

Debian και Παράγωγα

# chgrp www-data  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
# chgrp www-data  /etc/nginx/sites-available/nginxmeanspower.com.conf

CentOS και RHEL

# chgrp nginx  /etc/nginx/sites-available/tecmintlovesnginx.com.conf
# chgrp nginx  /etc/nginx/sites-available/nginxmeanspower.com.conf

Όταν τελειώσετε, θα πρέπει να διαγράψετε το δείγμα αρχείου ή να το μετονομάσετε σε κάτι άλλο για να αποφύγετε σύγχυση ή διενέξεις.

Λάβετε υπόψη ότι θα χρειαστεί επίσης να δημιουργήσετε τον κατάλογο για τα αρχεία καταγραφής (/var/www/logs) και να δώσετε στον χρήστη Nginx (nginx ή www-data , ανάλογα με το αν εκτελείτε CentOS ή Debian) δικαιώματα ανάγνωσης και εγγραφής σε αυτό:

# mkdir /var/www/logs
# chmod -R 660 /var/www/logs
# chgrp <nginx user> /var/www/logs

Οι εικονικοί κεντρικοί υπολογιστές πρέπει τώρα να ενεργοποιηθούν δημιουργώντας έναν συμβολικό σύνδεσμο προς αυτό το αρχείο στον κατάλογο με ενεργοποιημένο τοποθεσίες:

# ln -s /etc/nginx/sites-available/tecmintlovesnginx.com.conf /etc/nginx/sites-enabled/tecmintlovesnginx.com.conf
# ln -s /etc/nginx/sites-available/nginxmeanspower.com.conf /etc/nginx/sites-enabled/nginxmeanspower.com.conf

Στη συνέχεια, δημιουργήστε ένα δείγμα αρχείου html με το όνομα index.html μέσα στο /var/www/<όνομα τομέα>/public_html για κάθε έναν από τους εικονικούς κεντρικούς υπολογιστές (αντικαταστήστε τον όπως απαιτείται). Τροποποιήστε τον ακόλουθο κώδικα όπως είναι απαραίτητο:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Tecmint loves Nginx</title>
  </head>
  <body>
  <h1>Tecmint loves Nginx!</h1>
  </body>
</html>

Τέλος, δοκιμάστε τη διαμόρφωση Nginx και ξεκινήστε τον διακομιστή web. Εάν υπάρχουν σφάλματα στη διαμόρφωση, θα σας ζητηθεί να τα διορθώσετε:

# nginx -t && systemctl start nginx

και προσθέστε τις ακόλουθες καταχωρήσεις στο αρχείο σας /etc/hosts στον τοπικό σας υπολογιστή ως βασική στρατηγική επίλυσης ονόματος:

192.168.0.25 tecmintlovesnginx.com
192.168.0.25 nginxmeanspower.com

Στη συνέχεια, ξεκινήστε ένα πρόγραμμα περιήγησης ιστού και μεταβείτε στις διευθύνσεις URL που αναφέρονται παραπάνω:

Για να προσθέσετε περισσότερους εικονικούς κεντρικούς υπολογιστές στο Nginx, απλώς επαναλάβετε τα βήματα που περιγράφονται παραπάνω όσες φορές χρειάζεται.

Εικονικοί οικοδεσπότες βασισμένοι σε IP στο Nginx

Σε αντίθεση με τους βασισμένους σε όνομα εικονικούς κεντρικούς υπολογιστές όπου όλοι οι κεντρικοί υπολογιστές είναι προσβάσιμοι μέσω της ίδιας διεύθυνσης IP, οι εικονικοί κεντρικοί υπολογιστές βασισμένοι σε IP απαιτούν διαφορετικό IP:port συνδυασμός το καθένα.

Αυτό επιτρέπει στον διακομιστή web να επιστρέφει διαφορετικούς ιστότοπους ανάλογα με τη διεύθυνση IP και τη θύρα στην οποία λαμβάνεται το αίτημα. Δεδομένου ότι οι εικονικοί κεντρικοί υπολογιστές που βασίζονται σε όνομα μας δίνουν το πλεονέκτημα της κοινής χρήσης διεύθυνσης IP και θύρας, αποτελούν το πρότυπο για διακομιστές ιστού γενικής χρήσης και θα πρέπει να είναι η επιλογή εγκατάστασης, εκτός εάν η εγκατεστημένη έκδοση του Nginx δεν υποστηρίζει Ένδειξη ονόματος διακομιστή (SNI), είτε επειδή είναι ΠΡΑΓΜΑΤΙΚΑ ξεπερασμένη έκδοση είτε επειδή μεταγλωττίστηκε χωρίς την επιλογή μεταγλώττισης –με-http_ssl_module.

Αν,

# nginx -V

δεν επιστρέφει τις επισημασμένες επιλογές παρακάτω:

θα χρειαστεί να ενημερώσετε την έκδοση του Nginx ή να την μεταγλωττίσετε ξανά, ανάλογα με την αρχική μέθοδο εγκατάστασης. Για τη μεταγλώττιση του Nginx, ακολουθήστε το παρακάτω άρθρο:

  1. Εγκατάσταση και μεταγλώττιση του Nginx από πηγές στο RHEL/CentOS 7

Υποθέτοντας ότι είμαστε έτοιμοι, πρέπει να σημειώσουμε ότι μια άλλη προϋπόθεση για τους βασισμένους σε IP εικονικούς κεντρικούς υπολογιστές είναι η διαθεσιμότητα ξεχωριστών IP – είτε με την ανάθεσή τους σε ξεχωριστές διεπαφές δικτύου είτε μέσω της χρήσης εικονικών IP (γνωστές και ως ψευδώνυμο IP).

Για να εκτελέσετε ψευδώνυμο IP στο Debian (υποθέτοντας ότι χρησιμοποιείτε το eth0), επεξεργαστείτε το /etc/network/interfaces ως εξής:

Debian και Παράγωγα

auto eth0:1
iface eth0:1 inet static
        address 192.168.0.25
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
auto eth0:2
iface eth0:2 inet static
        address 192.168.0.26
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

Στο παραπάνω παράδειγμα δημιουργούμε δύο εικονικά NIC από eth0: eth0:1 (192.168.0.25) και eth0:2 (192.168.0.26).

CentOS και RHEL

Στο CentOS, μετονομάστε το /etc/sysconfig/network-scripts/ifcfg-enp0s3 σε ifcfg-enp0s3:1 και δημιουργήστε ένα αντίγραφο ως ifcfg-enp0s3:2 και, στη συνέχεια, απλώς αλλάξτε τις ακόλουθες γραμμές, αντίστοιχα:

DEVICE="enp0s3:1"
IPADDR=192.168.0.25

και

DEVICE="enp0s3:2"
IPADDR=192.168.0.26

Μόλις τελειώσετε, επανεκκινήστε την υπηρεσία δικτύου:

# systemctl restart networking

Στη συνέχεια, κάντε τις ακόλουθες αλλαγές στα μπλοκ διακομιστή που ορίστηκαν προηγουμένως σε αυτό το άρθρο:

Στο /etc/nginx/sites-available/tecmintlovesnginx.com.conf:

listen 192.168.0.25:80

Στο /etc/nginx/sites-available/nginxmeanspower.com.conf:

listen 192.168.0.26:80

Τέλος, επανεκκινήστε το Nginx για να τεθούν σε ισχύ οι αλλαγές.

# systemctl restart nginx

και μην ξεχάσετε να ενημερώσετε ανάλογα το τοπικό σας /etc/hosts:

192.168.0.25 tecmintlovesnginx.com
192.168.0.26 nginxmeanspower.com

Έτσι, κάθε αίτημα που γίνεται στις 192.168.0.25 και 192.168.0.26 στη θύρα 80 θα επιστρέφει tecmintlovesnginx.com και nginxmeanspower.com, αντίστοιχα:

Όπως μπορείτε να δείτε στις παραπάνω εικόνες, έχετε πλέον δύο εικονικούς κεντρικούς υπολογιστές βασισμένους σε IP που χρησιμοποιούν το μοναδικό NIC στον διακομιστή σας με δύο διαφορετικά ψευδώνυμα IP.

Περίληψη

Σε αυτό το σεμινάριο έχουμε εξηγήσει πώς να ρυθμίσετε και τους εικονικούς κεντρικούς υπολογιστές βασισμένους σε όνομα και τους βασισμένους σε IP στο Nginx. Αν και πιθανότατα θα θέλετε να χρησιμοποιήσετε την πρώτη επιλογή, είναι σημαντικό να γνωρίζετε ότι η άλλη επιλογή εξακολουθεί να υπάρχει εάν τη χρειάζεστε - απλώς βεβαιωθείτε ότι λάβατε αυτήν την απόφαση αφού λάβετε υπόψη τα γεγονότα που περιγράφονται σε αυτόν τον οδηγό.

Επιπλέον, μπορεί να θέλετε να προσθέσετε σελιδοδείκτη στα έγγραφα Nginx καθώς αξίζει και καλό να ανατρέχετε συχνά σε αυτά κατά τη δημιουργία μπλοκ διακομιστών (εκεί το έχετε - μιλάμε στη γλώσσα Nginx τώρα) και τη διαμόρφωσή τους. Δεν θα πιστεύετε όλες τις επιλογές που είναι διαθέσιμες για να διαμορφώσετε και να συντονίσετε αυτόν τον εξαιρετικό διακομιστή ιστού.

Όπως πάντα, μη διστάσετε να μας στείλετε μια γραμμή χρησιμοποιώντας την παρακάτω φόρμα εάν έχετε οποιεσδήποτε ερωτήσεις ή σχόλια σχετικά με αυτό το άρθρο. Ανυπομονούμε να ακούσουμε από εσάς και τα σχόλιά σας σχετικά με αυτόν τον οδηγό είναι πολύ ευπρόσδεκτα.