Sobes.tech
Middle

Ինչու՞ պետք է նախքան Ruby-ն տեղադրել Nginx-ը։

sobes.tech AI

Պատասխան AI-ից

Nginx տեղադրվում է նախքան Ruby հավելվածը (օրինակ, Rails կամ Sinatra)՝ հետևյալ պատճառներով.

  1. Կայքային ֆայլերի սպասարկում: Nginx արդյունավետորեն (արագ և քիչ ռեսուրսների սպառումով) տրամադրում է կայքային ֆայլեր (CSS, JS, պատկերներ), ազատելով Ruby-գործընթացները դինամիկ հարցումների մշակման համար:
  2. Հետադարձ պրոքսի: Nginx հանդես է գալիս որպես հետադարձ պրոքսի, ընդունելով բոլոր մուտքային HTTP-հարցումները և ուղարկելով դրանք Ruby սերվերներին (օրինակ, Puma, Unicorn) պրոտոկոլի միջոցով (օրինակ, HTTP կամ Unix Domain Socket): Սա թույլ է տալիս կառավարել մի քանի Ruby-գործընթացներ և բաշխել բեռը:
  3. SSL/TLS տերմինալացում: Nginx կարող է մշակել կոդավորված SSL/TLS կապերը, թեթևացնելով Ruby հավելվածից այդ գործառույթը:
  4. Կեշավորում: Nginx կարող է կեշավորել պատասխանները, ինչը արագացնում է հաճախակի պահանջվող բովանդակության տրամադրումը:
  5. Կրճատում: Nginx կարող է կրճատել պատասխանները (gzip, brotli), նվազեցնելով փոխանցվող տվյալների ծավալը:
  6. Բեռի հավասարակշռում: Nginx կարող է բաշխել մուտքային հարցումները մի քանի Ruby հավելվածների միջև, բարձրացնել հասանելիությունը և ընդարձակելիությունը:
  7. Լոգավորում: Nginx առաջարկում է հզոր հնարավորություններ HTTP-հարցումների լոգավորման համար:
  8. Անվտանգություն: Nginx կարող է իրականացնել հիմնական անվտանգության ֆունկցիաներ, ինչպիսիք են արագության սահմանափակում, IP հասցեների արգելափակում և որոշ տեսակի հարձակումներից պաշտպանություն (օրինակ, DDoS HTTP մակարդակում):
  9. Պատասխանատվության բաժանում: Nginx զբաղվում է ենթակառուցվածքային խնդիրներով (HTTP, SSL սպասարկում), թույլ տալով Ruby հավելվածին կենտրոնանալ բիզնես-լոգիկայի վրա:

Unicorn-ի համար Nginx կոնֆիգուրացիայի օրինակ:

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

    # Ընտրովի: ուղարկել կայքային ֆայլերը ուղղակի
    location ~* \.(css|js|jpg|jpeg|gif|png|html)$ {
        root /path/to/your/app/public;
        expires 1d;
    }
}