Home Knowledge base Skyline Cloud Nginx को रिवर्स प्रॉक्सी के रूप में कैसे सेट करें KNOWLEDGE BASE

Nginx को रिवर्स प्रॉक्सी के रूप में कैसे सेट करें

Linux सर्वर पर Nginx को रिवर्स प्रॉक्सी के रूप में कॉन्फ़िगर करने की एक पूर्ण, सटीक गाइड — प्रॉक्सी हेडर, WebSockets, HTTPS, लोड बैलेंसिंग और कैशिंग, साथ ही प्रोडक्शन-रेडी कॉन्फ़िग जिसे आप कॉपी कर सकते हैं।

Nginx को रिवर्स प्रॉक्सी के रूप में कैसे सेट करें

Linux सर्वर पर Nginx को रिवर्स प्रॉक्सी के रूप में कॉन्फ़िगर करने की एक पूर्ण, सटीक गाइड — प्रॉक्सी हेडर, WebSockets, HTTPS, लोड बैलेंसिंग और कैशिंग, साथ ही प्रोडक्शन-रेडी कॉन्फ़िग जिसे आप कॉपी कर सकते हैं।

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

एक रिवर्स प्रॉक्सी एक या अधिक बैकएंड एप्लिकेशन के सामने बैठता है और क्लाइंट अनुरोधों को उन तक अग्रेषित करता है। अपने ऐप सर्वर (Node.js, Python, PHP-FPM, एक Docker कंटेनर) को सीधे इंटरनेट पर उजागर करने के बजाय, क्लाइंट Nginx से बात करते हैं, और Nginx एक निजी पते पर आपके ऐप से बात करता है।

यह आपको एक एकल सार्वजनिक प्रवेश बिंदु देता है जहाँ आप TLS को टर्मिनेट कर सकते हैं, कई बैकएंड के बीच ट्रैफ़िक को संतुलित कर सकते हैं, प्रतिक्रियाओं को कैश कर सकते हैं, रेट लिमिट लागू कर सकते हैं, और आंतरिक टोपोलॉजी को छिपा सकते हैं। यह प्रोडक्शन वेब ऐप्स के लिए मानक पैटर्न है — और यह Skyline Cloud के एक VPS या क्लाउड सर्वर के साथ स्वाभाविक रूप से जुड़ जाता है, जहाँ आपका डेटा PDPL और NCA अनुरूपता के लिए इन-किंगडम रहता है।

यह गाइड Ubuntu/Debian पाथ का उपयोग करती है, लेकिन हर डायरेक्टिव RHEL-परिवार के सिस्टम पर समान रूप से लागू होता है।

पूर्वापेक्षाएँ

  • sudo एक्सेस वाला एक Linux सर्वर (एक Skyline Cloud VPS या क्लाउड सर्वर अच्छा काम करता है)।
  • एक बैकएंड ऐप जो पहले से ही चल रहा है और स्थानीय रूप से सुन रहा है — उदाहरण के लिए 127.0.0.1:3000 पर।
  • एक डोमेन (जैसे एक .sa डोमेन) जिसमें एक A रिकॉर्ड आपके सर्वर के सार्वजनिक IP की ओर इशारा करता हो।

चरण 1 — Nginx इंस्टॉल करें

sudo apt update
sudo apt install nginx -y

पुष्टि करें कि यह चल रहा है और बूट पर सक्षम है:

sudo systemctl status nginx
sudo systemctl enable nginx

यदि आप UFW का उपयोग करते हैं तो फ़ायरवॉल खोलें:

sudo ufw allow 'Nginx Full'

चरण 2 — रिवर्स प्रॉक्सी सर्वर ब्लॉक बनाएँ

Nginx /etc/nginx/conf.d/ से .conf में समाप्त होने वाली किसी भी फ़ाइल को लोड करता है, और Debian/Ubuntu पर यह /etc/nginx/sites-enabled/ को भी पढ़ता है। एक समर्पित फ़ाइल बनाएँ ताकि आप डिफ़ॉल्ट को न छुएँ:

sudo nano /etc/nginx/conf.d/app.conf

निम्नलिखित जोड़ें, app.example.com और बैकएंड पते को अपने स्वयं के पते से बदलते हुए:

server {
    listen 80;
    listen [::]:80;
    server_name app.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;

        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_connect_timeout 60s;
        proxy_send_timeout    60s;
        proxy_read_timeout    60s;
    }
}

प्रत्येक हेडर क्यों मायने रखता है

डायरेक्टिव उद्देश्य
proxy_pass वह बैकएंड पता जिस पर Nginx अग्रेषित करता है। यहाँ कोई ट्रेलिंग स्लैश न होने से मूल URI पाथ बना रहता है।
Host मूल होस्टनेम को पास करता है ताकि ऐप सही लिंक उत्पन्न करे और डोमेन के अनुसार रूट करे।
X-Real-IP क्लाइंट का असली IP, जिसे प्रॉक्सी अन्यथा छिपा देता।
X-Forwarded-For प्रत्येक प्रॉक्सी हॉप को जोड़ता है ताकि ऐप पूरी क्लाइंट श्रृंखला देख सके।
X-Forwarded-Proto ऐप को बताता है कि मूल अनुरोध http था या https — TLS जोड़ने के बाद यह आवश्यक है।

चरण 3 — टेस्ट करें और रीलोड करें

कॉन्फ़िगरेशन लागू करने से पहले हमेशा उसे सत्यापित करें। यह सिंटैक्स त्रुटियों को आपकी साइट को डाउन करने से पहले पकड़ लेता है:

sudo nginx -t

आपको syntax is ok और test is successful दिखना चाहिए। फिर रीलोड करें — reload कॉन्फ़िग को सहजता से फिर से पढ़ता है, लगभग शून्य व्यवधान के साथ, restart के विपरीत:

sudo systemctl reload nginx

http://app.example.com पर जाएँ और आपको Nginx के माध्यम से सर्व किया गया अपना बैकएंड ऐप दिखना चाहिए।

चरण 4 — WebSockets का समर्थन करें

यदि आपका ऐप WebSockets का उपयोग करता है (चैट, लाइव डैशबोर्ड, डेव सर्वर), तो आपको Upgrade और Connection हेडर को अग्रेषित करना होगा, अन्यथा कनेक्शन प्रोटोकॉल बदलने में विफल हो जाएगा। इन्हें उसी location ब्लॉक के अंदर जोड़ें:

proxy_set_header Upgrade    $http_upgrade;
proxy_set_header Connection "upgrade";

चरण 2 की proxy_http_version 1.1; लाइन इसके काम करने के लिए आवश्यक है।

चरण 5 — एक मुफ़्त प्रमाणपत्र के साथ HTTPS जोड़ें

TLS को Nginx पर टर्मिनेट करें ताकि बैकएंड आंतरिक रूप से केवल सादा HTTP संभाले। Certbot इंस्टॉल करें और इसे स्वचालित रूप से SSL कॉन्फ़िगर करने दें:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d app.example.com

Certbot आपके सर्वर ब्लॉक को संपादित करता है, एक listen 443 ssl सर्वर जोड़ता है, और एक स्वचालित नवीनीकरण टाइमर सेट करता है। एक ड्राई रन के साथ सत्यापित करें कि नवीनीकरण काम करता है:

sudo certbot renew --dry-run

HTTP/2 सक्षम करने के लिए, SSL ब्लॉक में listen लाइन को क्रॉस-वर्शन फ़ॉर्म में बदलें:

listen 443 ssl http2;

अलग http2 on; डायरेक्टिव के बजाय listen 443 ssl http2; का उपयोग करें — संयुक्त फ़ॉर्म सभी वर्तमान Nginx संस्करणों पर काम करता है।

चरण 6 — कई बैकएंड के बीच लोड बैलेंस करें

ट्रैफ़िक को कई ऐप इंस्टेंस के बीच वितरित करने के लिए, एक upstream समूह परिभाषित करें और नाम से उस पर प्रॉक्सी करें। upstream ब्लॉक को फ़ाइल के शीर्ष पर, server के बाहर रखें:

upstream backend_pool {
    least_conn;
    server 127.0.0.1:3000;
    server 127.0.0.1:3001;
    server 127.0.0.1:3002 backup;
    keepalive 32;
}

server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://backend_pool;
        proxy_http_version 1.1;
        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 Connection        "";
    }
}
  • least_conn प्रत्येक अनुरोध को सबसे कम सक्रिय कनेक्शन वाले बैकएंड पर भेजता है। डिफ़ॉल्ट (कोई डायरेक्टिव नहीं) राउंड-रॉबिन है।
  • backup एक ऐसे सर्वर को चिह्नित करता है जिसका उपयोग केवल तभी होता है जब अन्य डाउन हों।
  • keepalive 32 अपस्ट्रीम कनेक्शन का पुन: उपयोग करता है। इसका उपयोग करते समय, प्रति अनुरोध उन्हें बंद होने से बचाने के लिए proxy_set_header Connection ""; सेट करें।

चरण 7 — बैकएंड प्रतिक्रियाओं को कैश करें (वैकल्पिक)

कैशिंग उस सामग्री के लिए आपके ऐप पर लोड को कम करती है जो प्रति उपयोगकर्ता नहीं बदलती। http कॉन्टेक्स्ट में कैश स्टोर परिभाषित करें (उदाहरण के लिए /etc/nginx/nginx.conf में):

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=app_cache:10m
                 max_size=1g inactive=60m use_temp_path=off;

फिर इसे location ब्लॉक के अंदर संदर्भित करें:

proxy_cache       app_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
add_header X-Cache-Status $upstream_cache_status;

X-Cache-Status प्रतिक्रिया हेडर HIT, MISS, या BYPASS रिपोर्ट करता है, ताकि आप अपने ब्राउज़र के नेटवर्क टैब से कैशिंग की पुष्टि कर सकें।

समस्या निवारण

  • 502 Bad Gateway — बैकएंड तक नहीं पहुँचा जा सकता। पुष्टि करें कि यह ss -tlnp | grep 3000 से सुन रहा है और proxy_pass में पता मेल खाता है।
  • 504 Gateway Timeout — एक धीमा बैकएंड; proxy_read_timeout बढ़ाएँ।
  • HTTPS के पीछे ऐप http:// लिंक उत्पन्न करता है — सुनिश्चित करें कि X-Forwarded-Proto $scheme सेट है और आपका ऐप इस पर भरोसा करता है।
  • लॉग जाँचें: sudo tail -f /var/log/nginx/error.log

समापन

अब आपके पास एक प्रोडक्शन-ग्रेड रिवर्स प्रॉक्सी है: TLS टर्मिनेशन, सही क्लाइंट हेडर, WebSocket समर्थन, लोड बैलेंसिंग, और वैकल्पिक कैशिंग। इसे अपने उपयोगकर्ताओं और अपने डेटा के करीब चलाएँ — Skyline Cloud सब कुछ इन-किंगडम होस्ट करता है, PDPL/NCA अनुरूपता, स्थानीय अरबी समर्थन, और पारदर्शी मूल्य निर्धारण के साथ। इस प्रॉक्सी को मैनेज्ड बिज़नेस ईमेल होस्टिंग के साथ जोड़कर एक पूर्ण स्टैक बनाएँ, और सऊदी वेब होस्टिंग हब में और अधिक गाइड देखें।

तैनात करने के लिए तैयार हैं? अपना Skyline Cloud खाता बनाएँ और मिनटों में एक VPS शुरू करें।

SKYLINE Engineering

@skyline

The engineering team at SKYLINE Industrial Solutions. We publish field-tested guides drawn from real KSA and GCC deployments.

See author profile
SKYLINE engineering services

Need this implemented for you?

Reading is free — building it right takes a team. SKYLINE engineers ship Skyline Cloud for Aramco vendors, banks, hospitals and government agencies across Saudi Arabia. Talk to us before you start.

Aramco Approved Contractor ISO 9001 · ISO 27001 SAMA CSF aligned NCA ECC ready 247+ KSA clients

Comments

0 total · 0 threads
Be the first to leave a comment.