Sobes.tech
Middle

Nginxi Ruby-dən əvvəl niyə quraşdırmalıyıq?

sobes.tech Süni İntellekt

AI-dan cavab

Nginx, Ruby tətbiqindən (məsələn, Rails və ya Sinatra) əvvəl qurulur və aşağıdakı səbəblərə görə edilir:

  1. Statik faylların xidmət göstərilməsi: Nginx statik faylları (CSS, JS, şəkillər) effektiv şəkildə (daha sürətli və az resursla) təqdim edir, bu da Ruby proseslərinin dinamik sorğuları işləmək üçün sərbəst qalmasına imkan verir.
  2. Reverse proxy: Nginx, daxil olan bütün HTTP sorğularını qəbul edir və onları Ruby serverlərinə (məsələn, Puma, Unicorn) protokol (məsələn, HTTP və ya Unix Domain Socket) vasitəsilə yönləndirir. Bu, çoxsaylı Ruby proseslərinin idarə olunmasına və yük balanslaşdırılmasına imkan verir.
  3. SSL/TLS terminləşdirmə: Nginx şifrələnmiş SSL/TLS əlaqələrini idarə edə bilər və bu vəzifəni Ruby tətbiqindən azad edir.
  4. Keşləmə: Nginx cavabları keşləyə bilər, bu da tez-tez soruşulan məzmunun çatdırılmasını sürətləndirir.
  5. Sıxışdırma: Nginx cavabları (gzip, brotli) sıxışdıra bilər, bu da ötürülən məlumatın həcmini azaldır.
  6. Yük balanslaşdırma: Nginx, daxil olan sorğuları bir neçə Ruby tətbiqi nümunəsinə paylaya bilər, bu da əlçatanlığı və miqyaslandırmanı artırır.
  7. Qeydiyyat: Nginx HTTP sorğularının qeydiyyatı üçün güclü imkanlar təqdim edir.
  8. Təhlükəsizlik: Nginx, sorğu sürətini məhdudlaşdırmaq, IP ünvanlarını bloklamaq və bəzi hücum növlərindən (məsələn, HTTP səviyyəsində DDoS) qorunmaq üçün əsas təhlükəsizlik funksiyalarını yerinə yetirə bilər.
  9. Məsuliyyətlərin bölünməsi: Nginx, infrastruktur tapşırıqlarını (HTTP, SSL) idarə edir və Ruby tətbiqinin biznes məntiqinə fokuslanmasına imkan verir.

Unicorn üçün proxy konfiqurasiyası nümunəsi:

server {
    listen 80;
    server_name your_domain.com;

    location / {
        proxy_pass http://unix:/path/to/your/app/tmp/sockets/unicorn.sock;
        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;
    }

    # İstəyə bağlı: statik aktivləri birbaşa xidmət et
    location ~* \.(css|js|jpg|jpeg|gif|png|html)$ {
        root /path/to/your/app/public;
        expires 1d;
    }
}