एंड्रॉयड

एक nginx रिवर्स प्रॉक्सी सेट करना

nginx वेब अनुप्रयोग के लिए एक रिवर्स प्रॉक्सी के रूप में विन्यास

nginx वेब अनुप्रयोग के लिए एक रिवर्स प्रॉक्सी के रूप में विन्यास

विषयसूची:

Anonim

एक रिवर्स प्रॉक्सी एक सेवा है जो क्लाइंट अनुरोध लेती है, एक या एक से अधिक अनुमानित सर्वरों को अनुरोध भेजती है, प्रतिक्रिया प्राप्त करती है और क्लाइंट के सर्वर की प्रतिक्रिया को डिलीवर करती है।

अपने प्रदर्शन और मापनीयता के कारण, NGINX अक्सर HTTP और गैर-HTTP सर्वर के लिए एक रिवर्स प्रॉक्सी के रूप में उपयोग किया जाता है। एक विशिष्ट रिवर्स प्रॉक्सी कॉन्फ़िगरेशन Nginx को Node.js, Python, या Java अनुप्रयोगों के सामने रखना है।

रिवर्स प्रॉक्सी के रूप में Nginx का उपयोग करने से आपको कई अतिरिक्त लाभ मिलते हैं:

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

यह लेख नंगेक्स को एक रिवर्स प्रॉक्सी के रूप में कॉन्फ़िगर करने के लिए आवश्यक चरणों की रूपरेखा देता है।

आवश्यक शर्तें

हम यह मान रहे हैं कि आपके पास अपने उबंटू, सेंटोस या डेबियन सर्वर पर नगीनेक्स स्थापित है।

रिवर्स प्रॉक्सी के रूप में नेग्नेक्स का उपयोग करना

Nginx को HTTP सर्वर के रिवर्स प्रॉक्सी के रूप में कॉन्फ़िगर करने के लिए, डोमेन के सर्वर ब्लॉक कॉन्फ़िगरेशन फ़ाइल को खोलें और इसके अंदर एक स्थान और एक अनुमानित सर्वर निर्दिष्ट करें:

server { listen 80; server_name www.example.com example.com; location /app { proxy_pass http://127.0.0.1:8080; } }

प्रॉक्सी सर्वर URL प्रॉक्सी_पास निर्देश का उपयोग करके सेट किया गया है और HTTP या HTTPS को प्रोटोकॉल, डोमेन नाम या आईपी पते और एक वैकल्पिक पोर्ट और URI के रूप में उपयोग कर सकता है।

ऊपर दिया गया कॉन्फ़िगरेशन, नगणक्स को http://127.0.0.1:8080 पर अनुमानित सर्वर पर /app स्थान पर सभी अनुरोधों को पारित करने के लिए कहता है।

उबंटू और डेबियन आधारित वितरण पर, सर्वर ब्लॉक फाइलें /etc/nginx/sites-available निर्देशिका में संग्रहीत की जाती हैं, जबकि CentOS पर /etc/nginx/conf.d निर्देशिका में।

यह proxy_pass कि location और proxy_pass निर्देश कैसे काम करते हैं, चलो निम्नलिखित उदाहरण लेते हैं:

server { listen 80; server_name www.example.com example.com; location /blog { proxy_pass http://node1.com:8000/wordpress/; } }

यदि कोई विज़िटर http://example.com/blog/my-post एक्सेस करता है, तो Nginx इस अनुरोध को http://node1.com:8000/wordpress/my-post प्रॉक्सी करेगा।

जब अनुमानित सर्वर के पते में एक URI, ( /wordpress/ ) होता है, तो अनुरोधित URI जो कि प्रॉक्सी सर्वर को दिया जाता है, उसे निर्देश में निर्दिष्ट URI द्वारा बदल दिया जाता है। यदि प्रॉक्सी सर्वर का पता यूआरआई के बिना निर्दिष्ट किया गया है, तो पूर्ण अनुरोध यूआरआई प्रॉक्सी सर्वर को पास कर दिया जाता है।

पासिंग रिक्वेस्ट हेडर्स

जब निग्नेक्स एक अनुरोध करता है, तो यह क्लाइंट, Host और Connection से एक अनुमानित अनुरोध में दो हेडर फ़ील्ड को स्वचालित रूप से परिभाषित करता है, और खाली हेडर निकालता है। Host को $proxy_host चर पर सेट किया गया है, और Connection को बंद करने के लिए सेट किया गया है।

प्रॉक्सी कनेक्शन के लिए हेडर को समायोजित या सेट करने के लिए, हेडर मूल्य के बाद proxy_set_header निर्देश का उपयोग करें। आप सभी उपलब्ध अनुरोध हेडर और उनके अनुमत मूल्यों की एक सूची यहां पा सकते हैं। यदि आप किसी हेडर को प्रॉक्सी सर्वर में जाने से रोकना चाहते हैं, तो उसे एक खाली स्ट्रिंग पर सेट करें ""

निम्नलिखित उदाहरण में, हम Host हेडर फ़ील्ड के मूल्य को $host में बदल रहे हैं और Accept-Encoding हेडर फ़ील्ड को इसके मान को एक खाली स्ट्रिंग पर सेट करके निकाल रहे हैं।

location / { proxy_set_header Host $host; proxy_set_header Accept-Encoding ""; proxy_pass http://localhost:3000; }

जब भी आप कॉन्फ़िगरेशन फ़ाइल को संशोधित करते हैं, तो आपको परिवर्तनों को प्रभावी करने के लिए Nginx सेवा को पुनरारंभ करना होगा।

नॉन-HTTP प्रॉक्सिड सर्वर में नार्गेक्स को एक रिवर्स प्रॉक्सी के रूप में कॉन्फ़िगर करना

गैर-एचटीटीपी प्रॉक्सी सर्वर से नगीनक्स को रिवर्स प्रॉक्सी के रूप में कॉन्फ़िगर करने के लिए, आप निम्नलिखित निर्देशों का उपयोग कर सकते हैं:

  • fastcgi_pass - FastCGI सर्वर पर रिवर्स प्रॉक्सी। uwsgi_pass - एक uwsgi सर्वर के लिए रिवर्स प्रॉक्सी। scgi_pass - SCGI सर्वर पर रिवर्स प्रॉक्सी। memcached_pass - एक Memcached सर्वर के लिए रिवर्स प्रॉक्सी।

सबसे आम उदाहरणों में से एक है Nginx को PHP-FPM के विपरीत प्रॉक्सी के रूप में उपयोग करना:

server { #… other directives location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.2-fpm.sock; } }

आम Nginx रिवर्स प्रॉक्सी विकल्प

HTTPS पर सामग्री परोसना आजकल एक मानक बन गया है। इस खंड में, हम आपको सुझाए गए Nginx प्रॉक्सी पैरामीटर और हेडर सहित HTTPS Nginx रिवर्स प्रॉक्सी कॉन्फ़िगरेशन का एक उदाहरण देंगे।

location/ { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; }

  • proxy_http_version 1.1 - HTTP प्रोटोकॉल संस्करण को प्रॉक्सी के लिए परिभाषित करता है, डिफ़ॉल्ट रूप से यह 1.0 पर सेट होता है। Websockets और Keepalive कनेक्शन के लिए आपको संस्करण 1.1 का उपयोग करने की आवश्यकता है। proxy_cache_bypass $http_upgrade - ऐसी स्थितियाँ सेट करता है जिसके अंतर्गत कैश से प्रतिक्रिया नहीं ली जाएगी। Upgrade $http_upgrade और Connection "upgrade" - यदि आपके एप्लिकेशन Websockets का उपयोग कर रहे हैं, तो इन शीर्ष लेख फ़ील्ड की आवश्यकता होती है। Host $host - पूर्ववर्तीता के निम्नलिखित क्रम में $host चर में शामिल हैं: अनुरोध लाइन से होस्टनाम, या Host अनुरोध हेडर फ़ील्ड से होस्टनाम, या अनुरोध से मेल खाने वाला सर्वर नाम। X-Real-IP $remote_addr - X-Real-IP $remote_addr सर्वर के लिए वास्तविक आगंतुक दूरस्थ IP पता। X-Forwarded-For $proxy_add_x_forwarded_for - क्लाइंट के माध्यम से प्रत्येक सर्वर के IP पतों वाली एक सूची को X-Forwarded-For $proxy_add_x_forwarded_for किया गया है। X-Forwarded-Proto $scheme - जब HTTPS सर्वर ब्लॉक के अंदर उपयोग किया जाता है, तो अनुमानित सर्वर से प्रत्येक HTTP प्रतिक्रिया HTTPS में फिर से लिखी जाती है। X-Forwarded-Host $host - क्लाइंट द्वारा अनुरोधित मूल होस्ट को परिभाषित करता है। X-Forwarded-Port $server_port - क्लाइंट द्वारा अनुरोधित मूल पोर्ट को परिभाषित करता है।

निष्कर्ष

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

nginx