Sobes.tech
Middle

Čo sa deje v Nginx?

sobes.tech AI

Odpoveď od AI

Aplikácia napísaná v Ruby (napríklad na frameworku Rails alebo Sinatra) sa vykonáva na webovom serveri pre aplikácie (napríklad Puma, Unicorn, Passenger). Nginx funguje ako frontendový server, prijímajúcý prichádzajúce HTTP požiadavky od klientov a presmerúvajúci ich na webový server pre Ruby aplikácie.

Hlavné funkcie Nginx v tomto kontexte:

  1. Proxovanie požiadaviek: Nginx pôsobí ako reverzný proxy server. Prijíma požiadavky od prehliadačov klientov a ich odosiela na webový server pre Ruby aplikácie. Po získaní odpovede od servera pre aplikácie ju vracia klientovi.
  2. Obsluha statických súborov: Nginx môže efektívne obsluhovať statické súbory (CSS, JavaScript, obrázky) priamo, bez zaťaženia webového servera pre Ruby aplikácie. To uvoľňuje aplikáciu a zvyšuje výkon.
  3. Vyvažovanie záťaže: Ak máte niekoľko inštancií webového servera pre Ruby aplikácie, Nginx môže rozdeľovať prichádzajúce požiadavky medzi ne, zabezpečujúc odolnosť voči chybám a škálovateľnosť.
  4. SSL terminácia: Nginx môže spracovávať SSL/TLS šifrovanie, uvoľňujúc webový server pre Ruby aplikácie od tejto úlohy.
  5. Cacheovanie: Nginx môže cacheovať odpovede, čo zrýchľuje načítanie stránok pre opakované požiadavky.
  6. Kompresia (gzip): Nginx môže komprimovať odpovede pred odoslaním klientovi, znižujúc objem prenášaných dát.

Konfigurácia Nginx pre Ruby aplikáciu zvyčajne zahŕňa:

  • Definovanie virtuálneho hostiteľa pre vašu doménu.
  • Nastavenie proxy požiadaviek na webový server pre Ruby aplikácie (napríklad cez socket alebo TCP port).
  • Definovanie ciest pre statické súbory.
  • Nastavenie SSL/TLS (ak je potrebné).
  • Nastavenie vyvažovania záťaže (ak je potrebné).
# Príklad jednoduchej konfigurácie Nginx pre Rails s Puma
server {
    listen 80;
    listen [::]:80;

    server_name example.com www.example.com;

    location / {
        # Proxy požiadaviek na Puma cez socket
        proxy_pass http://unix:/path/to/your/app/shared/sockets/puma.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;
    }

    location ~* \.(css|js|png|jpg|jpeg|gif|ico)$ {
        # Obsluha statických súborov
        root /path/to/your/app/public;
        expires max;
        add_header Cache-Control public;
    }

    # Pridajte ďalšie location bloky pre iné statické zdroje podľa potreby
}

Na záver, Nginx pôsobí ako švajčiarsky nôž pred webovým serverom pre Ruby aplikácie, zvyšujúc jeho výkon, bezpečnosť a škálovateľnosť.