Ubuntu 24.04
Sponsored Link

Nginx : रिवर्स प्रॉक्सी2024/05/31

 

Nginx को रिवर्स प्रॉक्सी सर्वर के रूप में कॉन्फ़िगर करें।

उदाहरण के लिए, Nginx को कॉन्फ़िगर करें जिसे HTTP/HTTPS [www.srv.world] तक एक्सेस करता है, उसे [node01.srv.world] पर अग्रेषित किया जाता है।

[1]

SSL प्रमाणपत्र प्राप्त करें, यहां देखें।

[2] Nginx कॉन्फ़िगर करें।
root@www:~#
vi /etc/nginx/sites-available/default
# सामग्री को निम्नानुसार बदलें
# सर्वर नाम या प्रमाणपत्र को अपने नाम से बदलें

server {
        listen      80 default_server;
        listen      [::]:80 default_server;
        listen      443 ssl http2 default_server;
        listen      [::]:443 ssl http2 default_server;
        server_name www.srv.world;

        ssl_certificate "/etc/letsencrypt/live/www.srv.world/fullchain.pem";
        ssl_certificate_key "/etc/letsencrypt/live/www.srv.world/privkey.pem";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;

        proxy_redirect      off;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    Host $http_host;

        location / {
                proxy_pass http://node01.srv.world/;
        }
}

root@www:~#
systemctl reload nginx

[3] X-Forwarded-For हेडर लॉग करने के लिए बैकएंड Nginx सर्वर को कॉन्फ़िगर करें।
root@node01:~#
vi /etc/nginx/nginx.conf
# [http] अनुभाग में [log_format] सेटिंग जोड़ें

http {
        log_format main '$remote_addr - $remote_user [$time_local] "$request" '
        '$status $body_bytes_sent "$http_referer" '
        '"$http_user_agent" "$http_x_forwarded_for"';

root@node01:~#
vi /etc/nginx/sites-available/default
# [server] अनुभाग में जोड़ें
# [set_real_ip_from] के लिए अपना स्थानीय नेटवर्क निर्दिष्ट करें

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        set_real_ip_from   10.0.0.0/24;
        real_ip_header     X-Forwarded-For;

root@node01:~#
systemctl reload nginx

[4] सत्यापित करें कि यह किसी भी क्लाइंट कंप्यूटर से फ्रंटएंड Nginx सर्वर तक पहुंचने के लिए ठीक काम करता है।
[5]
एकाधिक होस्टनामों या डोमेन नामों के अनुरोधों को प्रॉक्सी करना संभव है।
उदाहरण के लिए, [www.srv.world], [rx-7.srv.world], [rx-8.srv.world] को DNS सेटिंग द्वारा एक ही आईपी पता (यहां पर 10.0.0.31) सौंपा गया है और सर्वर पर Nginx अपने IP पते के साथ उन होस्टनाम के लिए सभी अनुरोध प्राप्त करता है।
यह उदाहरण उन सर्वरों का उपयोग करना दिखाता है जिनका डोमेन नाम समान है लेकिन यदि डोमेन नाम समान नहीं हैं तो कोई समस्या नहीं है।
नीचे दिया गया उदाहरण Nginx को कॉन्फ़िगर करने के लिए दिखाता है जो [www.srv.world] के अनुरोधों को स्थानीय Nginx डिफ़ॉल्ट साइट पर अग्रेषित किया जाता है,
[rx-7.srv.world] के अनुरोध बैकएंड सर्वर [rx-7.srv.world (10.0.0.101)] को अग्रेषित किए जाते हैं,
[rx-8.srv.world] के अनुरोधों को बैकएंड सर्वर [rx-8.srv.world (10.0.0.102)] पर भेज दिया जाता है।
root@www:~#
vi /etc/nginx/sites-available/rx-7.srv.world.conf
# नया निर्माण

server {
        listen      80;
        listen      [::]:80;
        listen      443 ssl http2;
        listen      [::]:443 ssl http2;
        server_name rx-7.srv.world;

        ssl_certificate "/etc/letsencrypt/live/rx-7.srv.world/fullchain.pem";
        ssl_certificate_key "/etc/letsencrypt/live/rx-7.srv.world/privkey.pem";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;

        proxy_redirect      off;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    Host $http_host;

        location / {
                proxy_pass http://rx-7.srv.world/;
        }
}

root@www:~#
vi /etc/nginx/sites-available/rx-8.srv.world.conf
# नया निर्माण

server {
        listen      80;
        listen      [::]:80;
        listen      443 ssl http2;
        listen      [::]:443 ssl http2;
        server_name rx-8.srv.world;

        ssl_certificate "/etc/letsencrypt/live/rx-8.srv.world/fullchain1.pem";
        ssl_certificate_key "/etc/letsencrypt/live/rx-8.srv.world/privkey1.pem";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;

        proxy_redirect      off;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    Host $http_host;

        location / {
                proxy_pass http://rx-8.srv.world/;
        }
}

root@www:~#
cd /etc/nginx/sites-enabled

root@www:/etc/nginx/sites-enabled#
ln -s ../sites-available/rx-7.srv.world.conf ./

root@www:/etc/nginx/sites-enabled#
ln -s ../sites-available/rx-8.srv.world.conf ./

root@www:/etc/nginx/sites-enabled#
systemctl reload nginx

[6] सत्यापित करें कि यह किसी भी क्लाइंट कंप्यूटर से प्रत्येक होस्टनाम तक पहुंचने के लिए ठीक काम करता है।
मिलान सामग्री