Nodejs ആപ്പിനുള്ള റിവേഴ്സ് പ്രോക്സി ആയി Nginx എങ്ങനെ കോൺഫിഗർ ചെയ്യാം


Nodejs, Chrome-ന്റെ V8 JavaScript എഞ്ചിനിൽ നിർമ്മിച്ച ഒരു സ്വതന്ത്ര ഓപ്പൺ സോഴ്uസ്, ഭാരം കുറഞ്ഞതും അളക്കാവുന്നതും കാര്യക്ഷമവുമായ JavaScript ചട്ടക്കൂടാണ്, കൂടാതെ ഇവന്റ്-ഡ്രൈവൺ, നോൺ-ബ്ലോക്ക് I/O മോഡൽ ഉപയോഗിക്കുന്നു. Nodejs ഇപ്പോൾ എല്ലായിടത്തും ഉണ്ട്, വെബ്uസൈറ്റുകളിൽ നിന്നും വെബ് ആപ്പുകളിൽ നിന്നും നെറ്റ്uവർക്ക് ആപ്പുകളിലേക്കും മറ്റും സോഫ്uറ്റ്uവെയർ വികസിപ്പിക്കുന്നതിന് വളരെ ജനപ്രിയമായി.

Nginx ഒരു ഓപ്പൺ സോഴ്uസും ഉയർന്ന പ്രകടനമുള്ള HTTP സെർവറും ലോഡ് ബാലൻസറും റിവേഴ്സ് പ്രോക്സി സോഫ്റ്റ്uവെയറും ആണ്. ഇതിന് ലളിതമായ കോൺഫിഗറേഷൻ ഭാഷയുണ്ട്, ഇത് കോൺഫിഗർ ചെയ്യുന്നത് എളുപ്പമാക്കുന്നു. ഈ ലേഖനത്തിൽ, Nodejs ആപ്ലിക്കേഷനുകൾക്കായി ഒരു റിവേഴ്സ് പ്രോക്സിയായി Nginx എങ്ങനെ ക്രമീകരിക്കാമെന്ന് ഞങ്ങൾ കാണിക്കും.

ശ്രദ്ധിക്കുക: നിങ്ങളുടെ സിസ്റ്റം ഇതിനകം തന്നെ Nodejs, NPM എന്നിവയിൽ പ്രവർത്തിക്കുന്നുണ്ടെങ്കിൽ, നിങ്ങളുടെ ആപ്പ് ഒരു പ്രത്യേക പോർട്ടിൽ പ്രവർത്തിക്കുന്നുണ്ടെങ്കിൽ, നേരിട്ട് ഘട്ടം 4-ലേക്ക് പോകുക.

ഘട്ടം 1: Linux-ൽ Nodejs, NPM എന്നിവ ഇൻസ്റ്റാൾ ചെയ്യുന്നു

Node.js-ന്റെയും NPM-ന്റെയും ഏറ്റവും പുതിയ പതിപ്പ് ഔദ്യോഗിക NodeSource Enterprise Linux, Fedora, Debian, Ubuntu ബൈനറി ഡിസ്ട്രിബ്യൂഷൻ റിപ്പോസിറ്ററി എന്നിവയിൽ നിന്ന് ഇൻസ്റ്റാൾ ചെയ്യാൻ ലഭ്യമാണ്, അത് Nodejs വെബ്uസൈറ്റ് പരിപാലിക്കുന്നു, അത് നിങ്ങളുടെ സിസ്റ്റത്തിലേക്ക് ചേർക്കേണ്ടതുണ്ട്. കാണിച്ചിരിക്കുന്നതുപോലെ ഏറ്റവും പുതിയ 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 ഫയലിൽ ഇനിപ്പറയുന്ന കോഡ് പകർത്തി ഒട്ടിക്കുക (നിങ്ങളുടെ സെർവർ IP ഉപയോഗിച്ച് 192.168.43.31 മാറ്റിസ്ഥാപിക്കുക).

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

ഇപ്പോൾ ഒരു ബ്രൗസർ തുറന്ന് നിങ്ങളുടെ ആപ്ലിക്കേഷൻ http://198.168.43.31:5000 എന്ന URL-ൽ ആക്uസസ് ചെയ്യുക.

ഘട്ടം 3: ലിനക്സിൽ Nginx റിവേഴ്സ് പ്രോക്സി ഇൻസ്റ്റാൾ ചെയ്യുക

താഴെ കാണിച്ചിരിക്കുന്നതുപോലെ ഞങ്ങൾ ഔദ്യോഗിക ശേഖരത്തിൽ നിന്ന് 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

ശ്രദ്ധിക്കുക: CentOS-ഉം RHEL-ഉം തമ്മിലുള്ള വ്യത്യാസങ്ങൾ കാരണം, നിങ്ങളുടെ OS പതിപ്പിനെ ആശ്രയിച്ച്, $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 (നോഡ് ആപ്പ്) എന്നിവ തുറക്കേണ്ടതുണ്ട്.

---------- 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: Nodejs ആപ്ലിക്കേഷനായി Nginx റിവേഴ്സ് പ്രോക്സി ആയി കോൺഫിഗർ ചെയ്യുക

ഇപ്പോൾ കാണിച്ചിരിക്കുന്നതുപോലെ /etc/nginx/conf.d/ എന്നതിന് കീഴിൽ നിങ്ങളുടെ നോഡ് ആപ്പിനായി ഒരു സെർവർ ബ്ലോക്ക് കോൺഫിഗറേഷൻ ഫയൽ സൃഷ്ടിക്കുക.

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

ഇനിപ്പറയുന്ന കോൺഫിഗറേഷൻ പകർത്തി ഒട്ടിക്കുക (നിങ്ങളുടെ സെർവർ IP ഉപയോഗിച്ച് 192.168.43.31 മാറ്റുക, നിങ്ങളുടെ ഡൊമെയ്ൻ നാമത്തിൽ 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 ആപ്ലിക്കേഷൻ ആക്സസ് ചെയ്യുക

URL-ൽ നിങ്ങളുടെ നോഡ് ആപ്പ് കേൾക്കുന്ന പോർട്ട് നൽകാതെ തന്നെ ഇപ്പോൾ നിങ്ങൾക്ക് അത് ആക്uസസ് ചെയ്യാൻ കഴിയും: ഇത് ഉപയോക്താക്കൾക്ക് ആക്uസസ് ചെയ്യാൻ വളരെ സൗകര്യപ്രദമായ മാർഗമാണ്.

http://sysmon.tecmint.lan 

നിങ്ങളുടെ ടെസ്റ്റ് ഡൊമെയ്ൻ നാമം പ്രവർത്തിക്കുന്നതിന്, /etc/hosts ഫയൽ ഉപയോഗിച്ച് ലോക്കൽ DNS സജ്ജീകരിക്കേണ്ടതുണ്ട്, അത് തുറന്ന് അതിൽ താഴെയുള്ള വരി ചേർക്കുക (നിങ്ങളുടെ സെർവർ IP, tecmint.lan എന്നിവ ഉപയോഗിച്ച് നിങ്ങളുടെ ഡൊമെയ്ൻ നാമം ഉപയോഗിച്ച് 192.168.43.31 മാറ്റാൻ ഓർമ്മിക്കുക. മുമ്പത്തെപ്പോലെ).

192.168.43.31 sysmon.tecmint.lan

അത്രയേയുള്ളൂ! ഈ ലേഖനത്തിൽ, Nodejs ആപ്ലിക്കേഷനുകൾക്കായി ഒരു റിവേഴ്സ് പ്രോക്സിയായി Nginx എങ്ങനെ കോൺഫിഗർ ചെയ്യാമെന്ന് ഞങ്ങൾ കാണിച്ചു. ഈ ലേഖനത്തെക്കുറിച്ച് എന്തെങ്കിലും ചോദ്യങ്ങൾ ചോദിക്കുന്നതിനോ നിങ്ങളുടെ ചിന്തകൾ പങ്കിടുന്നതിനോ ചുവടെയുള്ള ഫീഡ്uബാക്ക് ഫോം ഉപയോഗിക്കുക.