Sobes.tech
Middle

Дар Nginx чӣ рӯй медиҳад?

sobes.tech AI

Ҷавоб аз AI

Барномаи навиштаи дар Ruby (масалан, дар фреймворки Rails ё Sinatra) дар сервери веби барномаҳо иҷро мешавад (масалан, Puma, Unicorn, Passenger). Nginx ҳамчун сервери пешбар фаъолият мекунад, ки дархостҳои HTTP-ро аз мизоҷон қабул мекунад ва онҳоро ба сервери веби барномаҳо интиқол медиҳад.

Функсияҳои асосии Nginx дар ин контекст:

  1. Проксигардонии дархостҳо: Nginx ҳамчун прокси-и баръакс амал мекунад. Он дархостҳоро аз браузерҳои мизоҷон қабул мекунад ва онҳоро ба сервери веби барномаҳои Ruby мефиристад. Пас аз гирифтани ҷавоб аз сервери барномаҳо, онро ба мизоҷ бармегардонад.
  2. Хизматрасонии файлҳои статикӣ: Nginx метавонад файлҳои статикӣ (CSS, JavaScript, тасвирҳо)ро мустақиман ва бо самаранокӣ хизматрасонӣ кунад, ки ин барномаи Ruby-ро аз боргузорӣ озод мекунад ва самаранокиро баланд мебардорад.
  3. Танзими баробарии бор: Агар чанд нусхаи сервери веби Ruby дошта бошед, Nginx метавонад дархостҳои воридшударо байни онҳо тақсим кунад, то муқовимат ба хато ва масштабшавиро таъмин кунад.
  4. SSL-терминировка: Nginx метавонад SSL/TLS-ро коркард кунад, ки ин вазифаро аз сервери Ruby-ро бардошт.
  5. Кешгирӣ: Nginx метавонад ҷавобҳоро кеш кунад, ки ин суръатбахшии боргирии саҳифаҳоро барои дархостҳои такрорӣ таъмин мекунад.
  6. Тарафдорӣ (gzip): Nginx метавонад ҷавобҳоро пешакӣ фишурд, то миқдори маълумоти интиқолёфта кам шавад.

Конфигуратсияи Nginx барои барномаи Ruby одатан иборат аст аз:

  • Тартиби виртуалӣ барои домени шумо.
  • Танзимоти проксигардонии дархостҳо ба сервери веби Ruby (масалан, тавассути сокет ё порт TCP).
  • Тартиби роҳҳо барои файлҳои статикӣ.
  • Танзимоти SSL/TLS (агар зарур бошад).
  • Танзимоти балансгирии бор (агар зарур бошад).
# Намунаи конфигуратсияи содда барои Nginx барои Rails бо Puma
server {
    listen 80;
    listen [::]:80;

    server_name example.com www.example.com;

    location / {
        # Проксигардонии дархостҳо ба Puma тавассути сокет
        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)$ {
        # Хизматрасонии файлҳои статикӣ
        root /path/to/your/app/public;
        expires max;
        add_header Cache-Control public;
    }

    # Иловаи дигар блокҳои location барои дигар захираҳои статикӣ дар зарурӣ
}

Дар натиҷа, Nginx ҳамчун асбоби бисёрфунксионалӣ дар пеши сервери Ruby амал мекунад, ки иҷроиш, бехатарӣ ва масштабшавиро беҳтар мекунад.