Sobes.tech
Middle

Nginx'i Ruby'den önce neden kurmalıyız?

sobes.tech yapay zeka

AI'dan gelen yanıt

Nginx, Ruby uygulamasından (örneğin, Rails veya Sinatra) önce kurulur ve şu nedenlerle yapılır:

  1. Statik dosyaların servisi: Nginx, statik dosyaları (CSS, JS, resimler) daha verimli (daha hızlı ve daha az kaynak kullanımıyla) sunar, böylece Ruby süreçleri dinamik istekleri işlemek için serbest kalır.
  2. Ters proxy: Nginx, gelen tüm HTTP isteklerini kabul eden ve bunları Ruby sunucularına (örneğin, Puma, Unicorn) bir protokol (örneğin, HTTP veya Unix Domain Socket) üzerinden yönlendiren ters proxy görevi görür. Bu, birden fazla Ruby sürecini yönetmeye ve yük dengelemesine olanak tanır.
  3. SSL/TLS sonlandırma: Nginx, şifreli SSL/TLS bağlantılarını işleyebilir ve bu görevi Ruby uygulamasından alır.
  4. Önbellekleme: Nginx, yanıtları önbelleğe alabilir, böylece sıkça istenen içeriğin teslimatını hızlandırır.
  5. Sıkıştırma: Nginx, yanıtları (gzip, brotli) sıkıştırabilir, böylece iletilen veri miktarını azaltır.
  6. Yük dengeleme: Nginx, gelen istekleri birden fazla Ruby uygulama örneğine dağıtarak erişilebilirliği ve ölçeklenebilirliği artırır.
  7. Kayıt: Nginx, HTTP isteklerinin güçlü kayıt özellikleri sunar.
  8. Güvenlik: Nginx, istek hızını sınırlama, IP adreslerini engelleme ve bazı saldırı türlerine karşı koruma gibi temel güvenlik işlevlerini yerine getirebilir (örneğin, HTTP seviyesinde DDoS).
  9. Sorumlulukların ayrılması: Nginx, altyapı görevlerini (HTTP, SSL) üstlenir ve Ruby uygulamasının iş mantığına odaklanmasını sağlar.

Unicorn için proxy yapılandırması örneği:

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

    # Opsiyonel: statik varlıkları doğrudan sun
    location ~* \.(css|js|jpg|jpeg|gif|png|html)$ {
        root /path/to/your/app/public;
        expires 1d;
    }
}