Πώς να ρυθμίσετε το Nginx ως αντίστροφη μεσολάβηση για το Nodejs App


Το Nodejs είναι ένα ελεύθερο, ανοικτό, ελαφρύ, κλιμακωτό και αποτελεσματικό πλαίσιο JavaScript που βασίζεται στη μηχανή JavaScript V8 του Chrome και χρησιμοποιεί ένα μοντέλο εισόδου/εξόδου μη αποκλεισμού. Το Nodejs είναι πλέον παντού και έχει γίνει τόσο δημοφιλές για την ανάπτυξη λογισμικού από ιστότοπους, εφαρμογές ιστού σε εφαρμογές δικτύου και πολλά άλλα.

Το Nginx είναι ένας διακομιστής HTTP ανοικτής πηγής, υψηλής απόδοσης, balancer φορτίου και λογισμικό reverse proxy. Έχει μια απλή γλώσσα διαμόρφωσης που διευκολύνει τη διαμόρφωση. Σε αυτό το άρθρο, θα δείξουμε πώς να ρυθμίσετε το Nginx ως αντίστροφη μεσολάβηση για τις εφαρμογές Nodejs.

το κόκκινο

Βήμα 1: Εγκατάσταση Nodejs και NPM στο Linux

Η τελευταία έκδοση των Node.js και NPM είναι διαθέσιμη για εγκατάσταση από την επίσημη αποθήκη NodeSource Enterprise Linux, Fedora, Debian και Ubuntu, η οποία διατηρείται από τον ιστότοπο Nodejs και θα πρέπει να το προσθέσετε στο σύστημά σας για να μπορέσετε να εγκαταστήσετε τα πιο πρόσφατα πακέτα Nodejs και NPM όπως φαίνεται.

---------- 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
---------- 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 από την επίσημη αποθήκη, όπως φαίνεται παρακάτω.

Δημιουργήστε ένα αρχείο με όνομα /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

Δημιουργήστε ένα αρχείο με όνομα /etc/yum.repos.d/nginx.repo και επικολλήστε μία από τις παρακάτω διαμορφώσεις.

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/ gpgcheck=0 enabled=1

το κόκκινο

Στη συνέχεια, προσθέστε το κλειδί υπογραφής του αποθετηρίου και εγκαταστήστε το πακέτο 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 (εφαρμογή κόμβου) την οποία ο διακομιστής ιστού ακούει για αιτήματα σύνδεσης πελάτη.

---------- 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

Τώρα δημιουργήστε ένα αρχείο διαμόρφωσης μπλοκ διακομιστή για την εφαρμογή κόμβου σας στο /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 μέσω προγράμματος περιήγησης στο Web

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

http://sysmon.tecmint.lan 

Για να λειτουργήσει το δοκιμαστικό σας όνομα τομέα, πρέπει να ρυθμίσετε το τοπικό DNS χρησιμοποιώντας το αρχείο /etc/hosts , να το ανοίξετε και να προσθέσετε την παρακάτω γραμμή σε αυτό (θυμηθείτε να αλλάξετε 192.168.43.31 < strong> με την διεύθυνση IP του διακομιστή σας και tecmint.lan με το όνομα doamin όπως πριν).

192.168.43.31 sysmon.tecmint.lan

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