Πώς να ρυθμίσετε το Nginx ως Reverse Proxy για την εφαρμογή Nodejs
Το Nodejs είναι ένα δωρεάν ανοιχτού κώδικα, ελαφρύ, επεκτάσιμο και αποτελεσματικό πλαίσιο JavaScript που βασίζεται στη μηχανή JavaScript V8 του Chrome και χρησιμοποιεί ένα μοντέλο εισόδου/εξόδου που βασίζεται σε συμβάντα, χωρίς αποκλεισμό. Το Nodejs είναι πλέον παντού και έχει γίνει τόσο δημοφιλές για την ανάπτυξη λογισμικού από ιστότοπους, εφαρμογές ιστού έως εφαρμογές δικτύου και πολλά άλλα.
Το Nginx είναι ένας διακομιστής HTTP ανοικτού κώδικα, υψηλής απόδοσης, λογισμικό εξισορρόπησης φορτίου και αντίστροφου διακομιστή μεσολάβησης. Έχει μια απλή γλώσσα διαμόρφωσης που καθιστά εύκολη τη διαμόρφωση. Σε αυτό το άρθρο, θα δείξουμε πώς να ρυθμίσετε το Nginx ως αντίστροφο διακομιστή μεσολάβησης για εφαρμογές Nodejs.
Διαβάστε επίσης: Ο απόλυτος οδηγός για την ασφάλεια, τη σκλήρυνση και τη βελτίωση της απόδοσης του διακομιστή Web Nginx
Σημείωση: Εάν το σύστημά σας εκτελείται ήδη με Nodejs και NPM και η εφαρμογή σας εκτελείται σε μια συγκεκριμένη θύρα , μεταβείτε κατευθείαν στο Βήμα 4.
Βήμα 1: Εγκατάσταση Nodejs και NPM στο Linux
Η πιο πρόσφατη έκδοση του Node.js και του NPM είναι διαθέσιμη για εγκατάσταση από το επίσημο αποθετήριο δυαδικών διανομών NodeSource Enterprise Linux, Fedora, Debian και Ubuntu, το οποίο διατηρείται από τον ιστότοπο Nodejs και θα χρειαστεί να το προσθέσετε στο σύστημά σας για να μπορείτε να εγκαταστήσετε τα πιο πρόσφατα πακέτα Nodejs και NPM όπως φαίνεται.
Στο Debian/Ubuntu
---------- Install Node.js v11.x ----------
curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash -
sudo apt-get install -y nodejs
---------- Install Node.js v10.x ----------
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs
Σε CentOS/RHEL και Fedora
---------- Install Node.js v11.x ----------
curl -sL https://rpm.nodesource.com/setup_11.x | bash -
---------- Install Node.js v10.x ----------
curl -sL https://rpm.nodesource.com/setup_10.x | bash -
Βήμα 2: Δημιουργία εφαρμογής Nodejs
Για λόγους επίδειξης, θα δημιουργήσουμε ένα δείγμα εφαρμογής που ονομάζεται “sysmon”, το οποίο θα εκτελείται στη θύρα 5000 όπως φαίνεται.
sudo mkdir -p /var/www/html/sysmon
sudo vim /var/www/html/sysmon/server.js
Αντιγράψτε και επικολλήστε τον ακόλουθο κώδικα στο αρχείο server.js (αντικαταστήστε το 192.168.43.31 με την IP του διακομιστή σας).
const http = require('http');
const hostname = '192.168.43.31';
const port = 5000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Sysmon App is Up and Running!\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
Αποθηκεύστε το αρχείο και βγείτε.
Τώρα ξεκινήστε την εφαρμογή κόμβου χρησιμοποιώντας την ακόλουθη εντολή (πατήστε Ctrl+x
για να την τερματίσετε).
sudo node /var/www/html/sysmon/server.js
OR
sudo node /var/www/html/sysmon/server.js & #start it in the background to free up your terminal
Τώρα ανοίξτε ένα πρόγραμμα περιήγησης και αποκτήστε πρόσβαση στην εφαρμογή σας στη διεύθυνση URL http://198.168.43.31:5000
.
Βήμα 3: Εγκαταστήστε το Nginx Reverse Proxy στο Linux
Θα εγκαταστήσουμε την πιο πρόσφατη έκδοση του Nginx από το επίσημο αποθετήριο, όπως φαίνεται παρακάτω.
Στο Debian/Ubuntu
Δημιουργήστε ένα αρχείο με το όνομα /etc/apt/sources.list.d/nginx.list και προσθέστε τις ακόλουθες γραμμές σε αυτό.
deb http://nginx.org/packages/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/ubuntu/ bionic nginx
Στη συνέχεια, προσθέστε το κλειδί υπογραφής αποθετηρίου, ενημερώστε το ευρετήριο πακέτου του συστήματός σας και εγκαταστήστε το πακέτο nginx ως εξής.
wget --quiet http://nginx.org/keys/nginx_signing.key && sudo apt-key add nginx_signing.key
sudo apt update
sudo apt install nginx
Σε CentOS/RHEL και Fedora
Δημιουργήστε ένα αρχείο με το όνομα /etc/yum.repos.d/nginx.repo και επικολλήστε μία από τις παρακάτω διαμορφώσεις.
CentOS
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever
/$basearch/ gpgcheck=0 enabled=1
RHEL
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/$releasever
/$basearch/ gpgcheck=0 enabled=1
Σημείωση: Λόγω των διαφορών μεταξύ του τρόπου λειτουργίας του CentOS και του RHEL, είναι απαραίτητο να αντικατασταθεί το $releasever
με ένα από τα δύο 6 (για 6.x) ή 7 (για 7.x), ανάλογα με την έκδοση του λειτουργικού σας συστήματος.
Στη συνέχεια, προσθέστε το κλειδί υπογραφής αποθετηρίου και εγκαταστήστε το πακέτο nginx όπως φαίνεται.
wget --quiet http://nginx.org/keys/nginx_signing.key && rpm --import nginx_signing.key
yum install nginx
Μετά την επιτυχή εγκατάσταση του Nginx, ξεκινήστε το, ενεργοποιήστε το να ξεκινήσει αυτόματα κατά την εκκίνηση του συστήματος και ελέγξτε εάν είναι σε λειτουργία και σε λειτουργία.
---------- On Debian/Ubuntu ----------
sudo systemctl status nginx
sudo systemctl enable nginx
sudo systemctl status nginx
---------- On CentOS/RHEL ----------
systemctl status nginx
systemctl enable nginx
systemctl status nginx
Εάν εκτελείτε ένα τείχος προστασίας συστήματος, πρέπει να ανοίξετε τις θύρες 80 (HTTP), 443 (HTTPS) και 5000 (εφαρμογή κόμβου), τον οποίο ακούει ο διακομιστής web για αιτήματα σύνδεσης πελάτη.
---------- On Debian/Ubuntu ----------
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 5000/tcp
sudo ufw reload
---------- On CentOS/RHEL ----------
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=5000/tcp
firewall-cmd --reload
Βήμα 4: Διαμορφώστε το Nginx ως Reverse Proxy για την εφαρμογή Nodejs
Τώρα δημιουργήστε ένα αρχείο διαμόρφωσης μπλοκ διακομιστή για την εφαρμογή Node σας στο /etc/nginx/conf.d/ όπως φαίνεται.
sudo vim /etc/nginx/conf.d/sysmon.conf
Αντιγράψτε και επικολλήστε την ακόλουθη διαμόρφωση (αλλάξτε 192.168.43.31 με την IP του διακομιστή σας και tecmint.lan με το όνομα τομέα σας).
server {
listen 80;
server_name sysmon.tecmint.lan;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://192.168.43.31:5000;
}
}
Αποθηκεύστε τις αλλαγές και βγείτε από το αρχείο.
Τέλος, επανεκκινήστε την υπηρεσία Nginx για να πραγματοποιήσετε τις πρόσφατες αλλαγές.
sudo systemctl restart nginx
OR
systemctl restart nginx
Βήμα 5: Πρόσβαση στην εφαρμογή Nodejs μέσω του προγράμματος περιήγησης Ιστού
Τώρα θα πρέπει να έχετε πρόσβαση στην εφαρμογή Node σας χωρίς να παρέχετε τη θύρα στην οποία ακούει, στη διεύθυνση URL: αυτός είναι ένας πολύ βολικός τρόπος για τους χρήστες να έχουν πρόσβαση σε αυτήν.
http://sysmon.tecmint.lan
Για να λειτουργήσει το δοκιμαστικό όνομα τομέα σας, πρέπει να ρυθμίσετε το τοπικό DNS χρησιμοποιώντας το αρχείο /etc/hosts, να το ανοίξετε και να προσθέσετε τη γραμμή παρακάτω σε αυτό (θυμηθείτε να αλλάξετε το 192.168.43.31 με την IP του διακομιστή σας και το tecmint.lan με το όνομα τομέα σας όπως πριν).
192.168.43.31 sysmon.tecmint.lan
Αυτό είναι όλο! Σε αυτό το άρθρο, δείξαμε πώς να ρυθμίσετε το Nginx ως αντίστροφο διακομιστή μεσολάβησης για εφαρμογές Nodejs. Χρησιμοποιήστε την παρακάτω φόρμα σχολίων για να κάνετε ερωτήσεις ή να μοιραστείτε τις σκέψεις σας σχετικά με αυτό το άρθρο.