जेफिरनेट लोगो

क्विक टिप: Node.js के साथ NGINX और SSL कॉन्फ़िगर करना

दिनांक:

nginx एक उच्च-प्रदर्शन HTTP सर्वर होने के साथ-साथ रिवर्स प्रॉक्सी. पारंपरिक सर्वरों के विपरीत, एनजीआईएनएक्स एक इवेंट-संचालित, अतुल्यकालिक वास्तुकला का अनुसरण करता है। परिणामस्वरूप, मेमोरी फ़ुटप्रिंट कम है और प्रदर्शन उच्च है। यदि आप Node.js-आधारित वेब ऐप चला रहे हैं, तो आपको NGINX को रिवर्स प्रॉक्सी के रूप में उपयोग करने पर गंभीरता से विचार करना चाहिए।

एनजीआईएनएक्स स्थैतिक संपत्तियों की सेवा में बहुत कुशल हो सकता है। अन्य सभी अनुरोधों के लिए, यह आपके Node.js बैकएंड से बात करेगा और क्लाइंट को प्रतिक्रिया भेजेगा। इस ट्यूटोरियल में, हम चर्चा करेंगे कि Node.js के साथ काम करने के लिए NGINX को कैसे कॉन्फ़िगर किया जाए। हम यह भी देखेंगे कि एनजीआईएनएक्स सर्वर में एसएसएल कैसे सेटअप करें।

नोट: नोड में एक अंतर्निहित HTTPS मॉड्यूल भी है और इसे रिवर्स प्रॉक्सी की आवश्यकता के बिना आवश्यक प्रमाणपत्र फ़ाइलों को पढ़ने के लिए कॉन्फ़िगर किया जा सकता है। आप हमारे लेख में इसके बारे में अधिक जानकारी प्राप्त कर सकते हैं Node.js के साथ SSL / TLS का उपयोग कैसे करें.

एनजीआईएनएक्स स्थापित करना

यह मानते हुए कि आपकी मशीन पर पहले से ही Node.js इंस्टॉल है (यदि नहीं, तो जांचें)। यहाँ उत्पन्न करें), आइए देखें कि एनजीआईएनएक्स कैसे स्थापित करें।

लिनक्स पर इंस्टालेशन

यदि आप उबंटू चला रहे हैं, तो आप एनजीआईएनएक्स स्थापित करने के लिए निम्नलिखित कमांड का उपयोग कर सकते हैं:

sudo apt-get update
sudo apt-get install nginx

यदि आप उबंटू के अलावा कोई लिनक्स डिस्ट्रो चला रहे हैं, तो जांचें एनजीआईएनएक्स इंस्टालेशन डॉक्स देखें।

इंस्टॉल होते ही एनजीआईएनएक्स स्वचालित रूप से प्रारंभ हो जाएगा।

MacOS पर इंस्टालेशन

यदि आप macOS पर हैं, तो आप इसका उपयोग कर सकते हैं homebrew एनजीआईएनएक्स को आसानी से इंस्टॉल करने के लिए। चरण इस प्रकार हैं:

  • होमब्रू को निर्देशिका की आवश्यकता है /usr/local करने के लिए हो सकता है chown'आपके उपयोगकर्ता नाम पर। तो, पहले टर्मिनल में निम्नलिखित कमांड चलाएँ:

    sudo chown -R 'username here' /usr/local
    
    
  • अब निम्नलिखित दो कमांड आपके सिस्टम पर NGINX इंस्टॉल करेंगे:

    brew link pcre
    brew install nginx
    
    
  • एक बार इंस्टॉलेशन पूरा हो जाने पर, आप एनजीआईएनएक्स शुरू करने के लिए निम्नलिखित कमांड टाइप कर सकते हैं:

    sudo nginx
    
    
  • एनजीआईएनएक्स कॉन्फ़िगरेशन फ़ाइल यहां पाई जा सकती है: /usr/local/etc/nginx/nginx.conf.

विंडोज पर इंस्टॉलेशन

विंडोज़ के लिए, NGINX पर जाएँ डाउनलोड पेज और ज़िप प्राप्त करें. अगला चरण संग्रह को अनज़िप करना और कमांड प्रॉम्प्ट में निर्देशिका में निम्नानुसार ले जाना है:

unzip nginx-1.3.13.zip
cd nginx-1.3.13
start nginx

जैसा कि आप देख सकते हैं, कमांड start nginx NGINX प्रारंभ करेगा.

अब जब इंस्टॉलेशन हो गया है, तो आइए देखें कि आप एक साधारण सर्वर को कैसे कॉन्फ़िगर कर सकते हैं।

एक Node.js सर्वर की स्थापना

सबसे पहले, आइए एक सरल Node.js सर्वर बनाएं। हम एक परियोजना शुरू करके और इसे स्थापित करके शुरुआत करेंगे एक्सप्रेस पैकेज:

mkdir node-demo && cd node-demo
npm init -y
npm i express

नामक एक फ़ाइल बनाएँ server.js, निम्नलिखित सामग्रियों के साथ:

const express = require('express')
const app = express()
const port = 3000 app.get('/', (req, res) => res.send('Hello World!')) app.listen(port, () => console.log(`Example app listening on port ${port}!`))

आप सर्वर चलाकर प्रारंभ कर सकते हैं node server.js.

एनजीआईएनएक्स को कॉन्फ़िगर करना

अब NGINX डिफॉल्ट साइट कॉन्फ़िगरेशन फ़ाइल खोलें:

sudo nano /etc/nginx/sites-available/default

यदि आप चाहें, तो आप सीधे निर्देशिका में जा सकते हैं और अपने पसंदीदा टेक्स्ट एडिटर के साथ कॉन्फिग फ़ाइल खोल सकते हैं।

जैसे ही आप नीचे स्क्रॉल करेंगे, आपको एक मिलेगा server अवरोध पैदा करना। यह कुछ इस तरह दिखता है:

server { listen 80; server_name localhost; .... more config goes here
}

इसके बाद, हम कॉन्फ़िगर करेंगे server हमारी आवश्यकताओं के अनुरूप ब्लॉक करें। हम सभी अनुरोधों को अपने Node.js सर्वर तक भेजने के लिए NGINX को कॉन्फ़िगर करना चाहते हैं। उपरोक्त को बदलें server एक नए ब्लॉक के साथ ब्लॉक करें जैसा कि नीचे दिखाया गया है:

server { listen 80; server_name localhost; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }
}

जैसा कि आप देख सकते हैं, वेब सर्वर सुनेगा http://localhost बंदरगाह 80location / ब्लॉक एनजीआईएनएक्स को बताता है कि किसी भी आने वाले अनुरोध के साथ क्या करना है। हम उपयोग करते हैं proxy_pass हमारे Node.js एप्लिकेशन को इंगित करने के लिए, जो यहां चल रहा है http://localhost:3000 हमारे मामले में।

इस बिंदु पर, आपको फ़ाइल को सहेजना चाहिए और अपने ऑपरेटिंग सिस्टम के आधार पर एनजीआईएनएक्स को पुनः आरंभ करने के लिए निम्नलिखित टाइप करना चाहिए।

Ubuntu:

sudo service nginx restart

या:

sudo /etc/init.d/nginx restart

मैक ओ एस:

sudo nginx -s stop && sudo nginx

Windows:

nginx -s reload

एक बार यह पूरा हो जाने पर, आप जा सकते हैं http://localhost हमारे प्रॉक्सी को क्रियाशील देखने के लिए। हालाँकि आप NGINX वेब सर्वर तक पहुँच रहे हैं, आपको Node.js सर्वर से वास्तविक प्रतिक्रिया मिलेगी।

नोट: आपको यह सुनिश्चित करना होगा कि पोर्ट 80 पर कुछ और (जैसे अपाचे) तो नहीं चल रहा है।

एसएसएल की स्थापना

उपयोगकर्ता के ब्राउज़र के साथ एक सुरक्षित कनेक्शन बनाने के लिए, हमें एक डिजिटल प्रमाणपत्र प्राप्त करने की आवश्यकता होगी। आम तौर पर, आप इनमें से एक प्रमाणपत्र प्राधिकारी से प्राप्त करते हैं जैसे कि चलो एन्क्रिप्ट करें. यदि आप Let's Encrypt रूट पर जाते हैं, तो प्रमाणपत्र का उपयोग करके इंस्टॉल करना सुनिश्चित करें Certbot, जो आपके लिए NGINX को पुन: कॉन्फ़िगर करने का ध्यान रखेगा।

स्थानीय विकास के लिए (और इस ट्यूटोरियल का अनुसरण करने के लिए) आप भी कर सकते हैं एक स्व-हस्ताक्षरित प्रमाणपत्र बनाएं. एकमात्र समस्या यह है कि जब कोई आपकी वेबसाइट पर जाएगा तो ब्राउज़र एक चेतावनी दिखाएगा कि "प्रमाणपत्र विश्वसनीय नहीं है"। लेकिन आपकी स्थानीय मशीन पर परीक्षण के लिए यह बिल्कुल ठीक है।

एक बार जब आपके पास प्रमाणपत्र और निजी कुंजी हो, तो आप एनजीआईएनएक्स में एसएसएल सेट कर सकते हैं। आपको हमारे पिछले सर्वर ब्लॉक को निम्नलिखित में संशोधित करना होगा:

server { listen 80; listen 443 ssl; server_name localhost; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }
}

बस!

अब, यदि आप पहुँचते हैं https://localhost, आपका कनेक्शन सुरक्षित रहेगा। उपरोक्त कॉन्फ़िगरेशन मानता है कि प्रमाणपत्र और निजी कुंजी स्थित हैं /etc/nginx/ssl/server.crt और /etc/nginx/ssl/server.key क्रमशः, लेकिन आप चाहें तो इन स्थानों को बदल सकते हैं।

बोनस: स्थिर परिसंपत्तियों की सेवा

एनजीआईएनएक्स को हमारे नोड.जेएस सर्वर के सामने स्थापित करने का एक अतिरिक्त लाभ यह है कि हम इसे अपने ऐप के लिए आवश्यक किसी भी स्थिर संपत्ति की सेवा के लिए आसानी से कॉन्फ़िगर कर सकते हैं। यह नोड को संभालने के लिए इन अनुरोधों से गुजरने के ओवरहेड को बचाएगा।

ऐसा करने के लिए, हमें एक नया जोड़ना होगा location सर्वर कॉन्फ़िगरेशन को ब्लॉक करें:

server { listen 80; server_name localhost; location / { ... } location /public { root /usr/local/var/www; }
}

इसके अंदर location ब्लॉक पर हमने रूट सेट किया है /usr/local/var/www, लेकिन यदि आप चाहें तो आप एक अलग निर्देशिका चुन सकते हैं। परिणामस्वरूप, जब भी किसी चीज़ के लिए अनुरोध होता है http://localhost/public/somepath/file.html, NGINX फ़ाइल की सेवा करेगा /usr/local/var/www/public/somepath/file.html सीधे.

निष्कर्ष

इस संक्षिप्त ट्यूटोरियल में, हमने देखा है कि एनजीआईएनएक्स को हमारे नोड.जेएस ऐप के लिए रिवर्स प्रॉक्सी के रूप में कैसे उपयोग करें और एसएसएल को कॉन्फ़िगर करें। स्थैतिक संसाधनों को संभालने के लिए एनजीआईएनएक्स का उपयोग करके, आप अपने नोड एप्लिकेशन से कुछ लोड भी हटा सकते हैं।

स्रोत: https://www.sitepoint.com/configuring-nginx-ssl-node-js/?utm_source=rss

स्पॉट_आईएमजी

नवीनतम खुफिया

स्पॉट_आईएमजी