Sobes.tech
Middle

Nginxni Rubydan oldin nima uchun o'rnatish kerak?

sobes.tech AI

AIdan javob

Nginx, Ruby dasturidan (masalan, Rails yoki Sinatra) oldin o'rnatiladi va quyidagi sabablarga ko'ra amalga oshiriladi:

  1. Statik fayllarni xizmat qilish: Nginx statik fayllarni (CSS, JS, rasm) samarali (tezroq va kamroq resurs bilan) taqdim etadi, Ruby jarayonlarini dinamik so'rovlarni ishlash uchun bo'shatadi.
  2. Orqa proksi: Nginx kiruvchi barcha HTTP so'rovlarini qabul qiladi va ularni Ruby serverlariga (masalan, Puma, Unicorn) protokol (masalan, HTTP yoki Unix Domain Socket) orqali yuboradi. Bu bir nechta Ruby jarayonlarini boshqarish va yukni taqsimlash imkonini beradi.
  3. SSL/TLS terminatsiyasi: Nginx shifrlangan SSL/TLS ulanishlarini boshqarishi mumkin va bu vazifani Ruby ilovasidan olib tashlaydi.
  4. Kesh: Nginx javoblarni keshga olishi mumkin, bu tez-tez so'raladigan kontentni yetkazishni tezlashtiradi.
  5. Siqish: Nginx javoblarni (gzip, brotli) siqishi mumkin, bu uzatiladigan ma'lumot hajmini kamaytiradi.
  6. Yukni taqsimlash: Nginx kiruvchi so'rovlarni bir nechta Ruby ilova nusxalariga taqsimlashi mumkin, bu mavjudlik va kengaytirilishni oshiradi.
  7. Jurnal yozish: Nginx HTTP so'rovlarini yozib olish uchun kuchli imkoniyatlar taqdim etadi.
  8. Xavfsizlik: Nginx so'rovlar tezligini cheklash, IP manzillarni bloklash va ba'zi hujum turlaridan himoya qilish kabi asosiy xavfsizlik funksiyalarini bajarishi mumkin (masalan, HTTP darajasida DDoS).
  9. Mas'uliyatlarni ajratish: Nginx infratuzilma vazifalarini (HTTP, SSL) bajaradi, Ruby ilovasining biznes mantiqiga e'tibor qaratishiga imkon beradi.

Unicorn uchun proksi konfiguratsiyasi misoli:

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;
    }

    # Ixtiyoriy: statik aktivlarni to'g'ridan-to'g'ri xizmat qilish
    location ~* \.(css|js|jpg|jpeg|gif|png|html)$ {
        root /path/to/your/app/public;
        expires 1d;
    }
}