Nodejs App के लिए Nginx को रिवर्स प्रॉक्सी के रूप में कैसे कॉन्फ़िगर करें


Nodejs Chrome के V8 जावास्क्रिप्ट इंजन पर निर्मित एक मुक्त खुला स्रोत, हल्का, स्केलेबल और कुशल जावास्क्रिप्ट फ्रेमवर्क है और एक इवेंट-चालित, गैर-अवरुद्ध I/O मॉडल का उपयोग करता है। Nodejs अब हर जगह है, और वेबसाइटों, वेब ऐप से लेकर नेटवर्क ऐप और बहुत से सॉफ़्टवेयर विकसित करने के लिए इतना लोकप्रिय हो गया है।

Nginx एक खुला स्रोत, उच्च-प्रदर्शन HTTP सर्वर, लोड बैलेंसर और रिवर्स प्रॉक्सी सॉफ्टवेयर है। इसमें एक सरल विन्यास भाषा है जिससे इसे कॉन्फ़िगर करना आसान हो जाता है। इस लेख में, हम बताएंगे कि नोगेक्स को नोड्स अनुप्रयोगों के लिए रिवर्स प्रॉक्सी के रूप में कैसे कॉन्फ़िगर किया जाए।

लाल

चरण 1: लिनक्स में Nodejs और NPM स्थापित करना

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: एक नोड्स अनुप्रयोग बनाना

प्रदर्शन के उद्देश्य से, हम एक नमूना एप्लिकेशन बना रहे हैं, जिसे "sysmon" कहा जाएगा, जो दिखाए गए अनुसार पोर्ट 5000 पर चलेगा।

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

निम्न कोड को server.js फ़ाइल में कॉपी और पेस्ट करें (अपने सर्वर आईपी के साथ 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

अब एक ब्राउज़र खोलें और URL http://198.168.43.31 at000 पर अपने एप्लिकेशन को एक्सेस करें।

चरण 3: लिनक्स में Nginx रिवर्स प्रॉक्सी स्थापित करें

हम आधिकारिक रिपॉजिटरी से Nginx का नवीनतम संस्करण स्थापित करेंगे, जैसा कि नीचे दिखाया गया है।

/etc/apt/source.list.d/nginx.list नामक फ़ाइल बनाएं और इसमें निम्न पंक्तियाँ जोड़ें।

deb http://nginx.org/packages/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/ubuntu/  bionic 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

लाल

अगला, रिपॉजिटरी साइनिंग कुंजी जोड़ें और दिखाए गए अनुसार नेगनेक्स पैकेज स्थापित करें।

# 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: Nginjs अनुप्रयोग के लिए रिवर्स प्रॉक्सी के रूप में Nginx कॉन्फ़िगर करें

अब दिखाए गए अनुसार /etc/nginx/conf.d/ के तहत अपने नोड ऐप के लिए एक सर्वर ब्लॉक कॉन्फ़िगरेशन फ़ाइल बनाएं।

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

निम्नलिखित कॉन्फ़िगरेशन को कॉपी और पेस्ट करें (अपने डोमेन आईपी के साथ अपने सर्वर आईपी और tecmint.lan के साथ परिवर्तन 192.168.43.31 करें)।

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: वेब ब्राउज़र के माध्यम से नोड्स एप्लिकेशन तक पहुंचें

अब आप अपने नोड ऐप को उस पोर्ट पर सुने बिना उपलब्ध करा सकते हैं, जो URL पर सुन रहा है: यह उपयोगकर्ताओं के लिए इसे एक्सेस करने का एक बहुत ही सुविधाजनक तरीका है।

http://sysmon.tecmint.lan 

काम करने के लिए अपने परीक्षण डोमेन नाम के लिए, आपको /etc/मेजबान फ़ाइल का उपयोग करके स्थानीय DNS सेटअप करने की आवश्यकता है, इसे खोलें और इसमें नीचे दी गई पंक्ति जोड़ें (याद रखें 192.168.43.31 आपके सर्वर के साथ IP और tecmint.lan आपके doamin नाम के साथ पहले जैसा)।

192.168.43.31 sysmon.tecmint.lan

बस इतना ही! इस लेख में, हमने दिखाया कि नोजेक्स अनुप्रयोगों के लिए रिवर्स प्रॉक्सी के रूप में निग्नेक्स को कैसे कॉन्फ़िगर किया जाए। किसी भी प्रश्न को पूछने या इस लेख के बारे में अपने विचार साझा करने के लिए नीचे दिए गए फ़ीडबैक फ़ॉर्म का उपयोग करें।