Docker और Nginx के साथ सुरक्षित रिवर्स प्रॉक्सी कॉन्फ़िगरेशन

विषयसूची

परिचय

हाल ही में, ChatGPT, Google Gemini, Claude जैसे एआई सेवाओं के व्यापक उपयोग ने व्यक्तिगत उपयोगकर्ताओं और छोटे-छोटे टीमों को वेब एप्लिकेशन विकसित करने और प्रकाशित करने के लिए प्रोत्साहित किया है। हालांकि, इन एप्लिकेशनों को सुरक्षित रूप से संचालित करने के लिए मजबूत सुरक्षा उपायों की आवश्यकता होती है।

इस संदर्भ में, “रिवर्स प्रॉक्सी” तकनीक विशेष रूप से महत्वपूर्ण हो गई है।

रिवर्स प्रॉक्सी क्या है?

graph TB
    U((इंटरनेट))
    
    subgraph "आंतरिक नेटवर्क"
        N[रिवर्स प्रॉक्सी<br/>Nginx :443]
        A[एप्लिकेशन सर्वर]
    end
    
    U -->|HTTPS| N
    N -->|HTTP| A
    
    style U fill:#f9f,stroke:#333,stroke-width:2px
    style N fill:#90EE90,stroke:#333,stroke-width:2px
    style A fill:#87CEEB,stroke:#333,stroke-width:2px

रिवर्स प्रॉक्सी को सरल भाषा में समझाया जाए तो यह वेब एप्लिकेशन के सामने खड़ा एक गेटकीपर की तरह कार्य करता है।

उदाहरण के लिए:

  • जब कोई उपयोगकर्ता आपकी वेबसाइट पर पहुँचता है, तो सबसे पहले रिवर्स प्रॉक्सी (गेटकीपर) प्रतिक्रिया देता है।
  • रिवर्स प्रॉक्सी संदिग्ध ट्रैफिक को पहचानने और पहुंच के भार को प्रबंधित करने में सक्षम होता है।
  • यह उपयोगकर्ता के साथ संवाद को एन्क्रिप्ट (HTTPS) करके डेटा की सुरक्षा सुनिश्चित करता है।

रिवर्स प्रॉक्सी की आवश्यकता क्यों है?

सुरक्षा में वृद्धि

  • एप्लिकेशन सर्वर की सुरक्षा: वास्तविक एप्लिकेशन सर्वर को सीधे इंटरनेट से जोड़ने की बजाय, रिवर्स प्रॉक्सी के माध्यम से एक्सेस नियंत्रित किया जाता है।
  • अनधिकृत पहुँच को रोकना: यह अनधिकृत एक्सेस को ब्लॉक करता है, जिससे आपके सर्वर की सुरक्षा बढ़ती है।
  • डेटा एन्क्रिप्शन: HTTPS के माध्यम से संचार को एन्क्रिप्ट करके डेटा चोरी को रोकता है।

संचालन प्रबंधन में सुविधा

  • कई एप्लिकेशन का प्रबंधन: एक ही डोमेन के तहत कई एप्लिकेशनों का प्रबंधन आसान होता है।
  • SSL प्रमाणपत्र का एकीकृत प्रबंधन: SSL प्रमाणपत्रों का केंद्रीकृत प्रबंधन संभव होता है।
  • लॉग्स का केंद्रीकरण: सभी एक्सेस लॉग्स को एक ही स्थान पर संग्रहीत किया जा सकता है।

प्रदर्शन में सुधार

  • स्टैटिक कंटेंट कैशिंग: स्थैतिक सामग्री को कैश करके लोड समय को कम किया जा सकता है।
  • लोड बैलेंसिंग: ट्रैफिक के भार को विभाजित करके सर्वर की प्रदर्शन क्षमता बढ़ाई जाती है।
  • संचार का अनुकूलन: डेटा ट्रांसफर को बेहतर बनाकर संचार को अधिक प्रभावी बनाया जाता है।

इस मार्गदर्शिका से क्या हासिल होगा

इस मार्गदर्शिका में, हम Docker और Let’s Encrypt का उपयोग करके Nginx रिवर्स प्रॉक्सी सेटअप करेंगे, जिसमें मुफ्त SSL प्रमाणपत्र स्वचालित रूप से अपडेट होंगे। इससे आप निम्नलिखित सुविधाओं का लाभ उठा सकते हैं:

  • स्वचालित HTTPS सेटअप: वेब एप्लिकेशन के लिए स्वचालित HTTPS सक्षम करना।
  • सुरक्षा में मजबूती: मजबूत सुरक्षा उपायों के साथ सुरक्षित वेब सर्वर स्थापित करना।
  • प्रमाणपत्र का स्वचालित नवीनीकरण: SSL प्रमाणपत्रों का स्वचालित रूप से नवीनीकरण।
  • सरल Docker-आधारित सेटअप: Docker का उपयोग करके आसान और त्वरित सेटअप प्रक्रिया।
  • व्यक्तिगत और छोटे टीम प्रोजेक्ट के लिए उपयुक्त: व्यक्तिगत डेवलपमेंट प्रोजेक्ट्स और छोटे टीमों के लिए आदर्श संरचना।

सिस्टम संरचना

यह परियोजना Docker कंटेनरों में Nginx और Certbot चलाकर एक सुरक्षित वेब सर्वर वातावरण स्थापित करती है।

मुख्य घटक

  • Nginx कंटेनर (रिवर्स प्रॉक्सी):
    • बाहरी ट्रैफिक को स्वीकार करता है और इसे आंतरिक एप्लिकेशन सर्वर की ओर अग्रेषित करता है।
    • HTTPS टर्मिनेशन पॉइंट के रूप में कार्य करता है।
    • Alpine Linux आधारित हल्के वज़न वाले इमेज का उपयोग करता है।
  • Certbot कंटेनर (SSL प्रमाणपत्र प्रबंधन):
    • Let’s Encrypt से मुफ्त SSL प्रमाणपत्र प्राप्त करता है।
    • प्रमाणपत्रों का स्वचालित नवीनीकरण सुनिश्चित करता है (हर 12 घंटे में जाँच)।
    • नवीनीकरण के समय Nginx में स्वचालित रूप से अपडेट करता है।

कॉन्फ़िगरेशन फाइलों की भूमिका

  • nginx.conf: Nginx की बुनियादी सेटिंग्स।
  • default.conf: साइट-विशिष्ट सेटिंग्स (SSL सेटिंग्स, प्रॉक्सी नियम आदि)।
  • docker-compose.yml: कंटेनर संरचना प्रबंधन।
  • init-letsencrypt.sh: प्रारंभिक सेटअप स्क्रिप्ट।

सुरक्षा उपाय

इस सिस्टम में निम्नलिखित सुरक्षा सुविधाएँ शामिल हैं:

  • संवाद एन्क्रिप्शन:
    • केवल TLS 1.2/1.3 का उपयोग।
    • नवीनतम एन्क्रिप्शन सूट्स को अपनाना।
  • स्वचालित प्रमाणपत्र प्रबंधन:
    • SSL प्रमाणपत्रों का स्वचालित नवीनीकरण।
    • प्रमाणपत्र अधिकार प्रबंधन।
  • एक्सेस नियंत्रण:
    • HTTP से HTTPS पर स्वचालित रीडायरेक्ट।
    • प्रॉक्सी हेडर्स की उचित सेटिंग।

अतिरिक्त जानकारी

रिवर्स प्रॉक्सी सेटअप न केवल सुरक्षा को बढ़ाता है, बल्कि यह स्केलेबिलिटी और प्रदर्शन को भी बेहतर बनाता है। Docker का उपयोग करने से आपको एक पोर्टेबल और पुन: प्रयोज्य वातावरण मिलता है, जिसे आसानी से विभिन्न प्लेटफार्मों पर तैनात किया जा सकता है। Let’s Encrypt जैसे मुफ्त SSL प्रदाता का उपयोग करके, आप बिना किसी अतिरिक्त लागत के अपनी वेबसाइट की सुरक्षा सुनिश्चित कर सकते हैं।

प्रमुख फाइलों का विवरण

इस प्रोजेक्ट में निम्नलिखित मुख्य फाइलें शामिल हैं। प्रत्येक फाइल का अपना विशिष्ट कार्य होता है, जो मिलकर एक स्वचालित और सुरक्षित वेब सर्वर वातावरण को संभव बनाती हैं।

कॉन्फ़िगरेशन फाइलें

default.conf

यह Nginx की मुख्य कॉन्फ़िगरेशन फाइल है। इस फाइल में निम्नलिखित सेटिंग्स प्रबंधित की जाती हैं:

  • HTTPS पर स्वचालित रीडायरेक्ट सेटअप: उपयोगकर्ताओं को स्वचालित रूप से HTTPS पर रीडायरेक्ट करना।
  • SSL प्रमाणपत्र सेटअप: SSL प्रमाणपत्रों को कॉन्फ़िगर करना।
  • बैकएंड सर्वर कनेक्शन सेटिंग्स: बैकएंड एप्लिकेशन सर्वरों के साथ कनेक्शन स्थापित करना।

nginx.conf

यह Nginx की बुनियादी संचालन सेटिंग्स को परिभाषित करने वाली फाइल है। इसमें लॉग फॉर्मेट, वर्कर प्रोसेस सेटिंग्स आदि शामिल हैं, जो पूरे सिस्टम के मूल व्यवहार को निर्धारित करती हैं।

Docker संबंधित फाइलें

docker-compose.yml

यह फाइल सिस्टम की समग्र संरचना को परिभाषित करती है, जिसमें निम्नलिखित तत्व शामिल हैं:

  • Nginx कंटेनर की सेटिंग्स: रिवर्स प्रॉक्सी के रूप में Nginx को कॉन्फ़िगर करना।
  • Certbot कंटेनर की सेटिंग्स: SSL प्रमाणपत्रों का प्रबंधन करना।
  • प्रमाणपत्रों का स्वचालित नवीनीकरण प्रोसेस: प्रमाणपत्रों के स्वचालित रूप से अपडेट होने की प्रक्रिया को निर्दिष्ट करना।

Dockerfile

यह फाइल Nginx के कंटेनर इमेज को कस्टमाइज़ करने के लिए उपयोग की जाती है। इसमें Alpine Linux आधारित हल्के वज़न वाले इमेज का उपयोग किया जाता है और आवश्यक कॉन्फ़िगरेशन फाइलों को शामिल किया जाता है।

सेटअप स्क्रिप्ट

init-letsencrypt.sh

यह स्क्रिप्ट सिस्टम के प्रारंभिक सेटअप को स्वचालित करती है, जिसमें निम्नलिखित कार्य शामिल हैं:

  • SSL प्रमाणपत्र प्राप्त करना: Let’s Encrypt से SSL प्रमाणपत्र प्राप्त करना।
  • Nginx सेटिंग्स का प्रारंभिककरण: Nginx की प्रारंभिक कॉन्फ़िगरेशन करना।
  • प्रमाणपत्र अधिकार सेट करना: प्रमाणपत्रों के अधिकारों को सेट करना।

इस स्क्रिप्ट के माध्यम से, एक सुरक्षित वातावरण स्वचालित रूप से स्थापित किया जाता है।

प्रोजेक्ट की विस्तृत जानकारी इन फाइलों की विस्तृत सामग्री को आप प्रोजेक्ट के GitHub रिपॉजिटरी में देख सकते हैं। इसके अलावा, सेटअप के विस्तृत चरणों को आप बाद में आने वाले ट्यूटोरियल वीडियो में देख सकते हैं।

सेटअप प्रक्रिया

यहां, हम वास्तविक वातावरण की स्थापना की प्रक्रिया को समझाएंगे। यह प्रक्रिया इस प्रकार है कि शुरुआती उपयोगकर्ता भी आसानी से सेटअप कर सकें, इसके लिए इसे चरणबद्ध तरीके से प्रस्तुत किया गया है।

पूर्व तैयारी

सेटअप शुरू करने से पहले, निम्नलिखित की आवश्यकता होती है:

  • Docker इंस्टॉल किया हुआ सर्वर: आपके पास एक सर्वर होना चाहिए जिस पर Docker इंस्टॉल हो।
  • डोमेन नाम: एक पसंदीदा डोमेन नाम (अपने स्वयं के डोमेन)।
  • डोमेन का सर्वर IP पर पॉइंट होना: सुनिश्चित करें कि आपका डोमेन नाम आपके सर्वर के IP पते पर सही ढंग से पॉइंट किया गया है।

प्रक्रिया का अवलोकन

सेटअप को मुख्य रूप से दो चरणों में विभाजित किया गया है:

  1. टेस्ट मोड में सत्यापन:
    • लक्ष्य: सेटिंग्स में किसी भी त्रुटि के कारण Let’s Encrypt की दर सीमाओं से बचना।
    • कार्य: परीक्षण मोड में सेटअप की पुष्टि करना ताकि किसी भी गलत कॉन्फ़िगरेशन से बचा जा सके।
  2. प्रोडक्शन वातावरण का निर्माण:
    • लक्ष्य: सुनिश्चित करना कि सभी सेटिंग्स सही ढंग से काम कर रही हैं।
    • कार्य: टेस्ट मोड में सफलतापूर्वक पुष्टि के बाद, प्रोडक्शन प्रमाणपत्र प्राप्त करना और वास्तविक HTTPS वातावरण स्थापित करना।

प्रोडक्शन वातावरण का निर्माण

टेस्ट मोड में सेटअप की पुष्टि करने के बाद, निम्नलिखित चरणों का पालन करते हुए प्रोडक्शन प्रमाणपत्र प्राप्त किया जाता है और वास्तविक HTTPS वातावरण स्थापित किया जाता है:

  • प्रमाणपत्र प्राप्त करना: Let’s Encrypt से प्रोडक्शन प्रमाणपत्र प्राप्त करना।
  • HTTPS वातावरण की स्थापना: Nginx को प्रोडक्शन प्रमाणपत्रों के साथ कॉन्फ़िगर करना ताकि आपके वेब एप्लिकेशन के लिए सुरक्षित HTTPS कनेक्शन स्थापित हो सके।

अतिरिक्त जानकारी

रिवर्स प्रॉक्सी सेटअप न केवल सुरक्षा बढ़ाता है बल्कि स्केलेबिलिटी और प्रदर्शन में भी सुधार लाता है। Docker का उपयोग करने से आपको एक पोर्टेबल और पुन: प्रयोज्य वातावरण मिलता है, जिसे विभिन्न प्लेटफॉर्म पर आसानी से तैनात किया जा सकता है। Let’s Encrypt जैसे मुफ्त SSL प्रदाता का उपयोग करके, आप अपनी वेबसाइट की सुरक्षा सुनिश्चित कर सकते हैं बिना किसी अतिरिक्त लागत के।

लाभ:

  • सुरक्षा: रिवर्स प्रॉक्सी आपके सर्वर को सीधे इंटरनेट से छुपाता है, जिससे सुरक्षा बढ़ती है।
  • प्रदर्शन: स्टैटिक कंटेंट कैशिंग और लोड बैलेंसिंग से वेबसाइट का प्रदर्शन बेहतर होता है।
  • प्रबंधन: एकीकृत SSL प्रबंधन और केंद्रीकृत लॉगिंग से प्रबंधन सरल हो जाता है।

सुझाव:

  • मॉनिटरिंग: अपने सर्वर और रिवर्स प्रॉक्सी की नियमित मॉनिटरिंग करें ताकि किसी भी सुरक्षा या प्रदर्शन संबंधी समस्या को तुरंत पहचाना जा सके।
  • अपडेट्स: Docker, Nginx, और Certbot को नियमित रूप से अपडेट रखें ताकि नवीनतम सुरक्षा पैच और फीचर्स का लाभ उठाया जा सके।

प्रमुख फाइलों का वर्णन

इस प्रोजेक्ट में निम्नलिखित मुख्य फाइलें शामिल हैं। प्रत्येक फाइल का अपना विशेष कार्य होता है, जो मिलकर एक स्वचालित और सुरक्षित वेब सर्वर वातावरण को सक्षम बनाती हैं।

कॉन्फ़िगरेशन फाइलें

default.conf

यह फाइल Nginx की मुख्य कॉन्फ़िगरेशन फाइल है। इसमें निम्नलिखित सेटिंग्स प्रबंधित की जाती हैं:

  • HTTPS पर स्वचालित रीडायरेक्शन: उपयोगकर्ताओं को स्वचालित रूप से HTTPS प्रोटोकॉल पर रीडायरेक्ट करना।
  • SSL प्रमाणपत्र कॉन्फ़िगरेशन: SSL प्रमाणपत्रों को सेटअप और प्रबंधित करना।
  • बैकएंड सर्वर कनेक्शन सेटिंग्स: बैकएंड एप्लिकेशन सर्वरों के साथ सुरक्षित कनेक्शन स्थापित करना।

nginx.conf

यह फाइल Nginx के बुनियादी संचालन को परिभाषित करती है। इसमें लॉग फॉर्मेट, वर्कर प्रोसेस सेटिंग्स आदि शामिल हैं, जो पूरे सिस्टम के मूल व्यवहार को निर्धारित करते हैं।

Docker संबंधित फाइलें

docker-compose.yml

यह फाइल पूरे सिस्टम की संरचना को परिभाषित करती है, जिसमें निम्नलिखित तत्व शामिल हैं:

  • Nginx कंटेनर सेटिंग्स: रिवर्स प्रॉक्सी के रूप में Nginx को कॉन्फ़िगर करना।
  • Certbot कंटेनर सेटिंग्स: SSL प्रमाणपत्रों का प्रबंधन करना।
  • प्रमाणपत्रों का स्वचालित नवीनीकरण प्रोसेस: प्रमाणपत्रों के स्वचालित रूप से अपडेट होने की प्रक्रिया को निर्दिष्ट करना।

Dockerfile

यह फाइल Nginx के कंटेनर इमेज को कस्टमाइज़ करने के लिए उपयोग की जाती है। इसमें Alpine Linux आधारित हल्के वज़न वाले इमेज का उपयोग किया जाता है और आवश्यक कॉन्फ़िगरेशन फाइलों को शामिल किया जाता है।

सेटअप स्क्रिप्ट

init-letsencrypt.sh

यह स्क्रिप्ट सिस्टम के प्रारंभिक सेटअप को स्वचालित करती है, जिसमें निम्नलिखित कार्य शामिल हैं:

  • SSL प्रमाणपत्र प्राप्त करना: Let’s Encrypt से SSL प्रमाणपत्र प्राप्त करना।
  • Nginx सेटिंग्स का प्रारंभिककरण: Nginx की प्रारंभिक कॉन्फ़िगरेशन करना।
  • प्रमाणपत्र अधिकार सेट करना: प्रमाणपत्रों के अधिकारों को सेट करना।

इस स्क्रिप्ट के माध्यम से, एक सुरक्षित वातावरण स्वचालित रूप से स्थापित किया जाता है।

प्रोजेक्ट की विस्तृत जानकारी: इन फाइलों की विस्तृत सामग्री आप प्रोजेक्ट के GitHub रिपॉजिटरी में देख सकते हैं। इसके अलावा, सेटअप के विस्तृत चरणों को आप बाद में आने वाले ट्यूटोरियल वीडियो में देख सकते हैं।

सेटअप प्रक्रिया

यहां, हम वास्तविक वातावरण की स्थापना की प्रक्रिया को समझाएंगे। यह प्रक्रिया इस प्रकार है कि शुरुआती उपयोगकर्ता भी आसानी से सेटअप कर सकें, इसके लिए इसे चरणबद्ध तरीके से प्रस्तुत किया गया है।

पूर्व तैयारी

सेटअप शुरू करने से पहले, निम्नलिखित की आवश्यकता होती है:

  • Docker इंस्टॉल किया हुआ सर्वर: आपके पास एक सर्वर होना चाहिए जिस पर Docker इंस्टॉल हो।
  • डोमेन नाम: एक पसंदीदा डोमेन नाम (अपने स्वयं के डोमेन)।
  • डोमेन का सर्वर IP पर पॉइंट होना: सुनिश्चित करें कि आपका डोमेन नाम आपके सर्वर के IP पते पर सही ढंग से पॉइंट किया गया है।

प्रक्रिया का अवलोकन

सेटअप को मुख्य रूप से दो चरणों में विभाजित किया गया है:

  1. टेस्ट मोड में सत्यापन:
    • लक्ष्य: सेटिंग्स में किसी भी त्रुटि के कारण Let’s Encrypt की दर सीमाओं (Rate Limits) से बचना।
    • कार्य: परीक्षण मोड में सेटअप की पुष्टि करना ताकि किसी भी गलत कॉन्फ़िगरेशन से बचा जा सके।
  2. प्रोडक्शन वातावरण का निर्माण:
    • लक्ष्य: सुनिश्चित करना कि सभी सेटिंग्स सही ढंग से काम कर रही हैं।
    • कार्य: टेस्ट मोड में सफलतापूर्वक पुष्टि के बाद, प्रोडक्शन प्रमाणपत्र प्राप्त करना और वास्तविक HTTPS वातावरण स्थापित करना।

प्रोडक्शन वातावरण का निर्माण

टेस्ट मोड में सेटअप की पुष्टि करने के बाद, निम्नलिखित चरणों का पालन करते हुए प्रोडक्शन प्रमाणपत्र प्राप्त किया जाता है और वास्तविक HTTPS वातावरण स्थापित किया जाता है:

  • प्रमाणपत्र प्राप्त करना: Let’s Encrypt से प्रोडक्शन प्रमाणपत्र प्राप्त करना।
  • HTTPS वातावरण की स्थापना: Nginx को प्रोडक्शन प्रमाणपत्रों के साथ कॉन्फ़िगर करना ताकि आपके वेब एप्लिकेशन के लिए सुरक्षित HTTPS कनेक्शन स्थापित हो सके।

अतिरिक्त जानकारी

रिवर्स प्रॉक्सी सेटअप न केवल सुरक्षा बढ़ाता है बल्कि स्केलेबिलिटी और प्रदर्शन में भी सुधार लाता है। Docker का उपयोग करने से आपको एक पोर्टेबल और पुन: प्रयोज्य वातावरण मिलता है, जिसे विभिन्न प्लेटफॉर्म पर आसानी से तैनात किया जा सकता है। Let’s Encrypt जैसे मुफ्त SSL प्रदाता का उपयोग करके, आप अपनी वेबसाइट की सुरक्षा सुनिश्चित कर सकते हैं बिना किसी अतिरिक्त लागत के।

लाभ:

  • सुरक्षा: रिवर्स प्रॉक्सी आपके सर्वर को सीधे इंटरनेट से छुपाता है, जिससे सुरक्षा बढ़ती है।
  • प्रदर्शन: स्टैटिक कंटेंट कैशिंग और लोड बैलेंसिंग से वेबसाइट का प्रदर्शन बेहतर होता है।
  • प्रबंधन: एकीकृत SSL प्रबंधन और केंद्रीकृत लॉगिंग से प्रबंधन सरल हो जाता है।

सुझाव:

  • मॉनिटरिंग: अपने सर्वर और रिवर्स प्रॉक्सी की नियमित मॉनिटरिंग करें ताकि किसी भी सुरक्षा या प्रदर्शन संबंधी समस्या को तुरंत पहचाना जा सके।
  • अपडेट्स: Docker, Nginx, और Certbot को नियमित रूप से अपडेट रखें ताकि नवीनतम सुरक्षा पैच और फीचर्स का लाभ उठाया जा सके।

उपयोगी कमांड:

  • Nginx सेटिंग्स का परीक्षण:
    docker compose exec nginx-proxy nginx -t
    यह कमांड आपके Nginx कॉन्फ़िगरेशन फाइल्स की जांच करता है। यदि कोई त्रुटि नहीं है, तो आपको “syntax is ok” और “test is successful” संदेश प्राप्त होगा।
  • Nginx को पुनः प्रारंभ करना:
    docker compose restart nginx-proxy
    यदि आपने कोई सेटिंग्स बदलें हैं, तो यह कमांड Nginx सर्वर को पुनः प्रारंभ करेगा ताकि नई सेटिंग्स लागू हो सकें।
  • लॉग्स देखना:
    docker compose logs nginx-proxy
    यह कमांड Nginx प्रॉक्सी के लॉग्स को दर्शाता है, जिससे आप किसी भी समस्या का निदान कर सकते हैं।

कई साइटों का प्रबंधन

रिवर्स प्रॉक्सी का एक प्रमुख लाभ यह है कि आप आसानी से कई वेब साइटों और सेवाओं का प्रबंधन कर सकते हैं।

उदाहरण के लिए, निम्नलिखित परिस्थितियों पर विचार करें:

  • ब्लॉग साइट (जैसे WordPress) को पोर्ट 8080 पर चलाना
  • पोर्टफोलियो साइट को पोर्ट 8888 पर चलाना

सामान्यतः, इन साइटों तक पहुँचने के लिए आपको निम्नलिखित URL का उपयोग करना होगा:

http://example.in:8080 (ब्लॉग)
http://example.in:8888 (पोर्टफोलियो)

नोट: ऊपर दिए गए URL और पोर्ट नंबर केवल उदाहरण के लिए हैं। इन्हें आपके वास्तविक डोमेन नाम और उपयोग किए जाने वाले पोर्ट नंबर से बदलना आवश्यक है ताकि आपकी सेटअप अधिक प्रभावी हो सके।

लेकिन, रिवर्स प्रॉक्सी का उपयोग करके, आप निम्नलिखित सरल URL के माध्यम से इन साइटों तक पहुँच सकते हैं:

https://blog.example.in
https://portfolio.example.in

या:

https://example.in/blog
https://example.in/portfolio

कॉन्फ़िगरेशन उदाहरण:

सबडोमेन का उपयोग करते समय
server {
    server_name blog.example.in;
    location / {
        proxy_pass http://localhost:8080;
    }
}

server {
    server_name portfolio.example.in;
    location / {
        proxy_pass http://localhost:8888;
    }
}

उपयोगी टिप: सुनिश्चित करें कि आप blog.example.in और portfolio.example.in को अपने वास्तविक सबडोमेन नाम से बदलें। यह आपके ब्रांडिंग और साइट संगठन को बेहतर बनाने में मदद करेगा।

पथ के आधार पर विभाजित करते समय

server {
    server_name example.in;

    location /blog {
        proxy_pass http://localhost:8080;
    }

    location /portfolio {
        proxy_pass http://localhost:8888;
    }
}

उपयोगी टिप: इस सेटअप में, example.in पर /blog और /portfolio पाथ का उपयोग करते हुए विभिन्न सेवाओं को आसानी से एक्सेस किया जा सकता है। यह संरचना बड़े पैमाने पर प्रोजेक्ट्स के लिए सुविधाजनक होती है।

व्यावहारिक उपयोग केस

एक वास्तविक उपयोग केस के रूप में, एक ही LAN के भीतर विभिन्न सर्वरों पर ट्रैफिक को अग्रेषित करने का चित्रण निम्नानुसार हो सकता है:

  • ब्लॉग सर्वर: 192.168.1.10 पर पोर्ट 8080
  • पोर्टफोलियो सर्वर: 192.168.1.20 पर पोर्ट 8888

इस स्थिति में, आपके रिवर्स प्रॉक्सी सर्वर को निम्नलिखित प्रकार से कॉन्फ़िगर किया जा सकता है:

server {
    server_name blog.example.in;
    location / {
        proxy_pass http://192.168.1.10:8080;
    }
}

server {
    server_name portfolio.example.in;
    location / {
        proxy_pass http://192.168.1.20:8888;
    }
}

उपयोगी टिप: सुनिश्चित करें कि आपके सर्वर के IP पते सही ढंग से सेट किए गए हैं और पोर्ट नंबर आपके बैकएंड एप्लिकेशन सर्वरों के अनुरूप हैं।

graph TB
    U((इंटरनेट))
    
    subgraph "एक पीसी"
        N[रिवर्स प्रॉक्सी<br/>Nginx :443]
        B[ब्लॉग सर्वर<br/>:8080]
        P[पोर्टफोलियो सर्वर<br/>:8888]
    end
    
    U -->|HTTPS| N
    N -->|HTTP| B
    N -->|HTTP| P
    
    style U fill:#f9f,stroke:#333,stroke-width:2px
    style N fill:#90EE90,stroke:#333,stroke-width:2px
    style B fill:#87CEEB,stroke:#333,stroke-width:2px
    style P fill:#FFB6C1,stroke:#333,stroke-width:2px

अतिरिक्त सुझाव

  • URL और पोर्ट नंबर: ऊपर दिए गए उदाहरण URL और पोर्ट नंबर केवल नमूना के रूप में हैं। इन्हें अपने वास्तविक डोमेन नाम और उपयोग किए जाने वाले पोर्ट नंबर से बदलें ताकि आपकी सेटअप अधिक प्रभावी और सुरक्षित हो सके।
  • सुरक्षा: रिवर्स प्रॉक्सी सेटअप करते समय, हमेशा SSL प्रमाणपत्रों का उपयोग करें ताकि आपके साइटों के बीच का ट्रैफिक एन्क्रिप्टेड रहे। यह सुरक्षा को बढ़ाता है और डेटा की गोपनीयता सुनिश्चित करता है।
  • लोड बैलेंसिंग: यदि आपके पास उच्च ट्रैफिक वाली साइटें हैं, तो आप लोड बैलेंसिंग का उपयोग करके ट्रैफिक को कई बैकएंड सर्वरों में विभाजित कर सकते हैं, जिससे प्रदर्शन में सुधार होता है।
  • कैशिंग: स्थैतिक सामग्री के लिए कैशिंग सक्षम करने से वेबसाइट लोड समय में कमी आ सकती है और सर्वर पर लोड कम हो सकता है।
  • DNS सेटिंग्स: सुनिश्चित करें कि आपके सबडोमेन सही ढंग से आपके मुख्य डोमेन के DNS सेटिंग्स में जोड़ दिए गए हैं। यह रिवर्स प्रॉक्सी के साथ सही ढंग से काम करने के लिए आवश्यक है।
graph TB
    U((इंटरनेट))
    
    subgraph "आंतरिक LAN (192.168.0.0/24)"
        subgraph "प्रॉक्सी सर्वर (192.168.0.10)"
            N[रिवर्स प्रॉक्सी<br/>Nginx :443]
        end
        
        WP["वर्डप्रेस सर्वर<br/>(192.168.0.20:8080)"]
        APP["एप्लिकेशन सर्वर<br/>(192.168.0.30:3000)"]
        DB["डेटाबेस सर्वर<br/>(192.168.0.40:5432)"]
    end
    
    U -->|"https://blog.example.com"| N
    U -->|"https://app.example.com"| N
    N -->|"proxy_pass<br/>192.168.0.20:8080"| WP
    N -->|"proxy_pass<br/>192.168.0.30:3000"| APP
    APP -.->|"आंतरिक संचार"| DB
    
    style U fill:#f9f,stroke:#333,stroke-width:2px
    style N fill:#90EE90,stroke:#333,stroke-width:2px
    style WP fill:#87CEEB,stroke:#333,stroke-width:2px
    style APP fill:#FFB6C1,stroke:#333,stroke-width:2px
    style DB fill:#DDA0DD,stroke:#333,stroke-width:2px

उपयोगी कमांड्स:

  • Nginx कॉन्फ़िगरेशन का परीक्षण:
    docker compose exec nginx-proxy nginx -t
    यह कमांड आपके Nginx कॉन्फ़िगरेशन फाइलों की जाँच करता है। यदि कोई त्रुटि नहीं है, तो आपको “syntax is ok” और “test is successful” संदेश प्राप्त होगा।
  • Nginx को पुनः प्रारंभ करना:
    docker compose restart nginx-proxy
    यदि आपने कोई सेटिंग्स बदली हैं, तो यह कमांड Nginx सर्वर को पुनः प्रारंभ करेगा ताकि नई सेटिंग्स लागू हो सकें।
  • लॉग्स देखना:
    docker compose logs nginx-proxy
    यह कमांड Nginx प्रॉक्सी के लॉग्स को दर्शाता है, जिससे आप किसी भी समस्या का निदान कर सकते हैं।

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

If you like this article, please
Follow !

आइये इस पोस्ट को साझा करें!
विषयसूची