Nodejs programmasy üçin ters proksi hökmünde Nginx-i nädip sazlamaly


Nodejs, Chrome-nyň V8 JavaScript hereketlendirijisinde gurlan erkin açyk çeşme, ýeňil, ulaldylan we täsirli JavaScript çarçuwasy bolup, hadysalara esaslanýan, blokirlemeýän I/O modelini ulanýar. Nodejs indi hemme ýerde bar we web sahypalaryndan, web programmalaryndan tor programmalaryna we başga-da programma üpjünçiligini ösdürmek üçin meşhur boldy.

Nginx açyk çeşme, ýokary öndürijilikli HTTP serweri, ýük balanser we ters proksi programma üpjünçiligi. Düzeltmegi aňsatlaşdyrýan gönümel konfigurasiýa dili bar. Bu makalada, Nodejs programmalary üçin ters proksi hökmünde Nginx-i nädip sazlamalydygyny görkezeris.

Bellik: Ulgamyňyz eýýäm Nodejs we NPM bilen işleýän bolsa we programmaňyzy belli bir portda işleýän bolsa, göni 4-nji ädime geçiň.

1-nji ädim: Linux-da Nodejs we NPM gurmak

Node.js we NPM-iň iň soňky wersiýasy, Nodejs web sahypasy tarapyndan dolandyrylýan resmi NodeSource Enterprise Linux, Fedora, Debian we Ubuntu ikilik paýlaýyş ammaryndan gurnamak üçin elýeterlidir we muny başarmak üçin ulgamyňyza goşmaly bolarsyňyz. görkezilişi ýaly iň soňky Nodejs we NPM paketlerini guruň.

---------- 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-nji ädim: “Nodejs” programmasyny döretmek

Görkeziş maksady bilen, 5000 portda görkezilişi ýaly işleýän “sysmon” atly nusga programmasyny dörederis.

$ sudo mkdir -p /var/www/html/sysmon
$ sudo vim /var/www/html/sysmon/server.js

Aşakdaky kody server.js faýlyna göçüriň (192.168.43.31 serwer IP bilen çalşyň).

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}/`);
});

Faýly ýazdyryň we çykyň.

Indi düwün programmaňyzy aşakdaky buýrugy ulanyp başlaň (ony ýatyrmak üçin Ctrl + x basyň).

$ 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

Indi brauzer açyň we http://198.168.43.31:5000 URL-de programmaňyza giriň.

3-nji ädim: Linux-da Nginx ters proksi guruň

Nginx-iň iň soňky wersiýasyny aşakda görkezilişi ýaly resmi ammardan gurarys.

/Etc/apt/sources.list.d/nginx.list atly bir faýl dörediň we oňa aşakdaky setirleri goşuň.

deb http://nginx.org/packages/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/ubuntu/  bionic nginx

Ondan soň, ammar gol açaryny goşuň, ulgam bukjasynyň indeksini täzeläň we nginx paketini aşakdaky ýaly guruň.

$ 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 atly bir faýl dörediň we aşakdaky konfigurasiýalardan birini goýuň.

[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

Bellik: CentOS bilen RHEL-iň arasyndaky tapawutlar sebäpli, OS wersiýaňyza baglylykda $goýberiji ýa-da 6 (6.x üçin) ýa-da 7 (7.x üçin) çalyşmaly.

Ondan soň, ammar gol düwmesini goşuň we görkezilişi ýaly nginx paketini guruň.

# wget --quiet http://nginx.org/keys/nginx_signing.key && rpm --import nginx_signing.key
# yum install nginx

Nginx-i üstünlikli guranyňyzdan soň, ony işe giriziň, ulgam ýüklemesinde awtomatiki başlamaga we işleýändigini ýa-da işlemeýändigini barlamaga mümkinçilik beriň.

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

Ulgam gorag diwary bilen işleýän bolsaňyz, web serweri müşderi birikdiriş haýyşlaryny diňleýän 80 (HTTP), 443 (HTTPS) we 5000 (düwün programmasy) portuny açmaly.

---------- 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-nji ädim: Nginx-i Nodejs programmasy üçin ters proksi hökmünde sazlaň

Indi görkezilişi ýaly /etc/nginx/conf.d/ aşagyndaky Node programmaňyz üçin serwer blok konfigurasiýa faýly dörediň.

$ sudo vim /etc/nginx/conf.d/sysmon.conf 

Aşakdaky konfigurasiýany göçüriň we göçüriň (serwer IP we tecmint.lan domen adyňyz bilen 192.168.43.31 üýtgediň).

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

Üýtgeşmeleri ýazdyryň we faýldan çykyň.

Ahyrynda, soňky üýtgeşmeleri amala aşyrmak üçin Nginx hyzmatyny täzeden açyň.

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

5-nji ädim: Web brauzeri arkaly Nodejs programmasyna giriň

Indi “Node” programmaňyza URL-de diňleýän portuny üpjün etmezden girip bilmeli: bu ulanyjylara girmek üçin has amatly usul.

http://sysmon.tecmint.lan 

Synag domen adyňyzyň işlemegi üçin/etc/host faýlyny ulanyp, ýerli DNS-i gurnamaly, ony açmaly we aşakdaky setiri goşmaly (IP serweriňiz IP we tecmint.lan bilen doamin adyňyz bilen 192.168.43.31 üýtgetmegi ýatdan çykarmaň. öňküsi ýaly).

192.168.43.31 sysmon.tecmint.lan

Bu hemmesi! Bu makalada Nginjs programmalary üçin ters proksi hökmünde Nginx-i nädip sazlamalydygyny görkezdik. Sorag bermek ýa-da bu makala baradaky pikirleriňizi paýlaşmak üçin aşakdaky seslenme formasyny ulanyň.