Skip to main content

Nginx (II Hissə)

Salam dostlar,

"Nginx" ilə bağlı əvvəlki məqaləmin birinci hissəsində "Nginx"-ə nəzəri giriş edərək quraşdırılma prosesini icra etmişdim. Bu məqaləmdə isə (həmçinin birinci məqaləmdə ikinci hissə məqalənin yazılmasına görə verilmiş müsbət rəylərə əsasən) "Nginx"-in ayarlanması, nəzəri olaraq "forward", "reverse proxy" və "load balancer", eləcə də "failover scenario"-nun yaradılaraq "test simulation" prosesinin icra edilməsini həyata keçirəcəyik. Beləliklə, ilk olaraq "forward", "reverse proxy" və "load balancer" haqqında qısaca bəhs etmək istərdim.


  • "Forward Proxy Server" - düz "proxy server" anlamını ifadə edir və həmçinin "proxy server" kimi də adlanır. Bu zaman "client" kompüterlər "forward proxy server"-in adından sorğular göndərir ki, "forward proxy server" "client"-ın kimliyini kənardan (serverlərdən) gizlətmiş olur;


No alt text provided for this image

  • "Reverse Proxy Server" - əks "proxy server" anlamını ifadə edir və müəyyən funksionallıq baxımından "forward proxy server"-ə bənzəsə də, lakin "forward proxy server"-in gördüyü işin əksini edir. Yəni bu zaman "server" kompüterlər "reverse proxy server"-in adından sorğular göndərir ki, "reverse proxy server" "server"-in kimliyini kənardan (client-lardan) gizlətmiş olur ki, bu da "server"-i kənar müdaxilə və təhlükəli vəziyyətlərdən qorumuş olur;


No alt text provided for this image

  • "Load Balancer" - yük balanslaşdırıcısı funksiyasını icra edir. Qeyd etdiyimiz kimi, bəzən "reverse proxy server" yük balanslaşdırıcısı (load balancer) kimi fəaliyyət göstərə bilir ki, bu zaman hər bir yük balanslaşdırıcısı (load balancer) əks (reverse) "proxy server" olmalıdır. Beləliklə, "load balancer"-in rolu "client" sorğularının yükünü "server"-lər arasında bölüşdürməkdir.


No alt text provided for this image

Beləliklə, "Nginx"-in "forward", "reverse proxy" və "load balancer" kimi fəaliyyət göstərmək qabiliyyəti, onu bir çox veb proqramlar və arxitekturalar üçün daha da fuksional edir.


  • "Failover Scenario"-nun qurulması:

Bu test mühitinin qurulması üçün, ən azından iki ədəd "web server" platformasının (Nginx) qurulması lazımdır ki, bu zaman bir "web server"-də nasazlıq baş verərsə, "redundancy" və "failover" imkanların tətbiq edilməsi ilə digər "web server"-in əlçatan olması təmin olunsun. Beləliklə, hal-hazırda mənim "Nginx" ilə yüklənmiş iki ədəd "web server" platforması mövcuddur və ediləcək prosedurlar aşağıdakı kimidir:

  1. İlk öncə "Nginx" quraşdırdığımız hər iki "server"-də "Nginx"-in həm "service", həm də konfiqurasiya (fayl) səviyyəsində funksionallığını, yəni hər hansı bir xətanın olub-olmadığını yoxlamaq olmaq üçün əmrləri icra edirik;


No alt text provided for this image
No alt text provided for this image

2. Hər iki "server"-də "proxy"-nin qurulması və ayarlanması üçün "/etc/nginx/conf.d/" qovluğunda (directory) "proxy.conf" adlı fayl yaradaraq xüsusi ayarları tənzimləyirik. Qeyd edim ki, həmin faylda "upstream backend" sətrinin altında yer alan birinci sətrdəki "server" sözünün qarşısına ikinci "web server ip" ünvanını, həmin sətrin altında yer alan ikinci sətrdəki "server" sözünün qarşısına (backup sözü olan sətrdə) isə birinci "web server ip" ünvanını daxil edirik. Ayarlar daxil edildikdən sonra "systemctl restart nginx" əmri icra edilməklə "web service" yenidən başladılır;


No alt text provided for this image
No alt text provided for this image

Yaratdığımız bu konfiqurasiya faylında yer alan sətrlərin izahını təqdim edirəm:

  • "upstream backend" - "load balance" tətbiq olunacaq serverlər qrupunu müəyyən edir və burada "backend" sözü "default" sözdür və bu sözün yerinə istəyə bağlı olan istənilən söz qeyd oluna bilər;
  • "server x.x.x.x. ip" - "backend" qrupuna daxil olan "server"-dir və bu sətrdə ikinci "server"-in "ip" ünvanı qeyd olunur;
  • "server x.x.x.x. ip backup" - "backend" qrupuna daxil olan "server"-dir, burada "backup" sözü o deməkdir ki, həmin qrupda hər hansı bir "server" sıradan çıxarsa, məhz bu "server" yükü balanslaşdırmaq üçün (load balancer) olaraq işə düşür. Bu sətrdə isə birinci "server"-in "ip" ünvanı qeyd olunur;
  • "listen 80" - yalnız 80 portundan gələn sorğular dinlənilməlidir;
  • "location / " - "root" ("/") yerini müəyyən edir;
  • "proxy_pass http://backend" - daxil olan sorğuların (request), "backend" qrupunda yer alan "server"-lərdən birinə yönlədirilməsini təmin edir;
  • "proxy_set_header Host $host" - "backend" qrupunda olan "server"-lərin gələn sorğuları düzgün idarə edə bilməsini təmin edir ki, burada "host" dəyərdir (value);
  • "proxy_set_header X-Real-IP $remote_addr" - istəyə bağlı olan bir seçimdir və gələn sorğunun "client ip" ünvanına təyin edilməsini təmin edir.

Ümumiyyətlə nəticə olaraq qeyd edim ki, bu ayarlanma prosesi "load balancer" və "reverse proxy" kombinasiyasını təşkil etməklə müəyyən alqoritmə əsaslanaraq sorğuları iki "backend server"-dən (məs: web server 1&2) birinə yönləndirir ki, "backend server"-lərdən biri əlçatmaz olarsa, "Nginx" avtomatik olaraq trafikin digər serverə yönləndirilməsini təmin etmiş olur.

3. Hər iki "server"-də "proxy" ayarlarının (load balancer və reverse proxy) funksional olmasını xüsusi əmr vasitəsilə yoxlayırıq;

  • Əsas (birinci) "server"-də "load balancer"-i yoxlayırıq və nəticə uğurludursa aşağıdakı kimi yekun nəticə əldə olunacaqdır;


No alt text provided for this image
No alt text provided for this image

  • İkinci "server"-də "reverse proxy"-ni yoxlayırıq, bu zaman əsas (yəni birinci) "server"-dən cavab (reply) gəlib-gəlmədiyi yoxlanmış olur və nəticə uğurludursa aşağıdakı kimi yekun nəticə əldə olunacaqdır;


No alt text provided for this image



No alt text provided for this image

Qeyd:

"curl http://localhost" əmrində yekun nəticəni yoxlamaq üçün "localhost" yerinə "server"-in həm öz, həm də digərinin "ip" ünvanı qeyd oluna bilər ki, bu zaman hər iki "server" arasında əlaqənin uğurlu olması da bir daha təsdiqlənmiş olur.


"Failure Scenario"

4. "Server"-in sıradan çıxarılması simulyasiyanı (failure scenario) tətbiq etməklə, əsas (birinci) "server"-də "nginx service"-i dayandırmaqla, digər "server"-in funksional olub-olmamasını yoxlayırıq və nəticə uğurludursa aşağıdakı kimi yekun nəticə əldə olunacaqdır;


No alt text provided for this image
No alt text provided for this image


5. İndi isə, ikinci "server"-də "curl http://localhost" əmrini icra edirik və nəticə uğurludursa aşağıdakı kimi yekun nəticə əldə olunacaqdır;


No alt text provided for this image


6. İkinci "server"-də "nginx service"-i dayandırmaqla, digər "server"-in funksional olub-olmamasını yoxlayırıq və nəticə uğurludursa aşağıdakı kimi yekun nəticə əldə olunacaqdır;

Qeyd:

Əsas (birinci) "server"-də "nginx service" işlək vəziyyətə qaytarıldı ki, nəticə olaraq statusu aktiv vəziyyətdədir;


No alt text provided for this image
No alt text provided for this image
No alt text provided for this image


Qeyd:

Əsas (birinci) "server"-də "nginx service" işlək vəziyyətdə olmasına baxmayaraq "browser"-də "internal server error" tipli xəta bildirişi verdi;


No alt text provided for this image


Dostlar,

Güman edirəm ki, ikinci hissə olan bu praktiki məqaləm maariflənməniz istiqamətində sizin üçün faydalı olar.


Təşəkkür edirəm


Hörmətlə,

Müəllif

Araz Əhmədov

Comments

Popular posts from this blog

How To Install WordPress On Rocky Linux 9

WordPress is widely recognized as the preferred platform for building websites and blogs due to its ease of use and wide range of customization features. Suppose you’re considering installing WordPress on Rocky Linux, an open-source operating system known for its reliability. In that case, you’ll find the process to be quite straightforward when coupled with the LAMP stack – Linux, Apache, MySQL, and PHP. In the following article, we will guide you through each step of setting up WordPress on Rocky Linux using LAMP, allowing you to get your website or blog up and running smoothly in no time. So, let’s dive into the process! Install WordPress On Rocky Linux 9 Step 1: Update Your System in Rocky Linux Step 2: Installation process of LAMP Step 3: Install WordPress in Rocky Linux 9 Step 4: Configuration of Database Step 5: Configuration of WordPress Step 6: Configuration of Firewall settings Step 7: Log in to WordPress Step 1: Update Your System in Rocky Linux Before installing any new sof...

Fayl Bərpa Alqoritmləri

  Salam dostlar, Bu yazımda sizə fayl bərpa proqramlarının (Recuva, Wondershare, EaseUS Data Recovery və s.) faylları bərpa etməsi haqqında bəhs etmək istərdim ki, məhz bu proqramlar silinmiş məlumatların (şəkil, video, sənəd və s.) geri qaytarılması üçün xüsusi alqoritmlərdən istifadə edir. Bu prosesin texniki tərəflərini izah etmək üçün əvvəlcə bir neçə əsas anlayışı bilmək lazımdır: Silinmiş faylların vəziyyəti Əksər fayl sistemlərində (məsələn, NTFS, FAT32, exFAT) fayl silindikdə, həmin fayl fiziki olaraq diskin üzərindən silinmir ki, bu zaman: Fayl sistemində faylın olduğu yer boş olaraq işarələnir və həmin sahə üzərində yeni məlumat yazıla bilməsi üçün icazə verilir; Faylın "metadata"-ları (fayl adı, ölçüsü, yaradılma tarixi və s.) xüsusi strukturlarda saxlanılır (məsələn, NTFS-də MFT / Master File Table). Bu səbəbdən, fayl silindikdən dərhal sonra onu bərpa etmək mümkündür, çünki həmin məlumat fiziki olaraq diskin üzərində qalır. Ancaq yeni məlumat həmin yerə yazıldıqd...

Antivirus Mexanizmi

Salam dostlar, Bu yazımda sizə antivirus mexanizminin necə işlədiyi haqqında bəzi məlumatları təqdim etmək istərdim. Belə ki, bildiyiniz kimi antivirus proqramları kompüterlərin təhlükəsizliyini təmin etmək üçün ən vacib alətlərdən biridir ki, məhz virusları aşkar etmək, onların qarşısını almaq və onları zərərsizləşdirmək üçün nəzərdə tutulmuşdur. Beləliklə: 🔍 Virusun aşkarlanması Antivirus proqramları, əsasən, iki - imza əsaslı və davranış əsaslı üsulla virusları aşkar edir: İmza əsaslı aşkarlama (signature-based detection) - bu üsul, virusların əvvəlcədən müəyyən edilmiş imzaları (məlumat bazası) ilə müqayisə olunmasına əsaslanır. Hər bir virusun unikal bir imzası (kod parçası) olur və antivirus proqramı bu imzaları tanımaq üçün məlumat bazasını mütəmadi olaraq yeniləyir ki, bu üsul yalnız virusları aşkarlaya bilir; Davranış əsaslı aşkarlama (behavior-based detection) - bu üsul, virusun davranışına əsaslanaraq zərərli fəaliyyətləri müəyyən edir. Yəni, bir virusun fayllara icazəsiz...