Nginx — bu yuqori samarali, yengil va keng qo'llaniladigan web server va reverse proxy server. Veb sayt yoki ilovani tezkor, xavfsiz va ishonchli qilishda Nginx muhim rol o'ynaydi.

Bu postda men sizga Nginx-ni o'rnatish, konfiguratsiya qilish va turli holatlar uchun optimallashtirish bo'yicha bosqichma-bosqich tushuntiraman.

1.Nginx o'rnatish

Ubuntu/Debian tizimida:

sudo apt update
sudo apt install nginx -y

CentOS/RHEL tizimida:

sudo yum install epel-release -y
sudo yum install nginx -y

O'rnatilganini tekshirish:

nginx -v

2.Nginx ishga tushirish va avtomatik boshlash

sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx
  • start — serverni ishga tushiradi
  • enable — tizim ishga tushganda avtomatik boshlanishini ta'minlaydi
  • status — server holatini ko'rsatadi

3. Asosiy konfiguratsiya fayllari

Nginx konfiguratsiyasi quyidagi fayllarda joylashgan:

  • /etc/nginx/nginx.conf – global konfiguratsiya
  • /etc/nginx/sites-available/ – sayt konfiguratsiyalari
  • /etc/nginx/sites-enabled/ – faollashtirilgan saytlar (symbolic link orqali)

🔹 Qoidaga ko'ra, sayt konfiguratsiyalarini sites-available ga yozib, sites-enabled ga link qilasiz:

sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/

4.Oddiy veb sayt konfiguratsiyasi

/etc/nginx/sites-available/mysite faylini yarating va quyidagicha yozing:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/mysite;
    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;

    location = /50x.html {
        root /var/www/mysite;
    }
}

Izohlar:

  • listen 80; — HTTP port 80 da tinglash
  • server_name — domen nomini ko'rsatadi
  • root — sayt fayllari joylashgan katalog
  • location / — asosiy URL yo'llarini aniqlaydi
  • try_files — mavjud fayl bo'lsa chiqaradi, bo'lmasa 404

5.HTTPS (SSL/TLS) bilan ishlash

Let's Encrypt bilan bepul SSL o'rnatish:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.com -d www.example.com

Keyin avtomatik SSL yangilanishini sozlash:

sudo systemctl status certbot.timer

6.Reverse Proxy sozlash

Agar siz Node.js, Django yoki boshqa backend ishlatayotgan bo'lsangiz:

server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
  • proxy_pass — backend server manzili
  • proxy_set_header — to'g'ri HTTP sarlavhalarni uzatadi

7.Nginx optimizatsiyasi

Yuklamaga qarab quyidagilarni sozlashingiz mumkin:

worker_processes auto;
worker_connections 1024;
keepalive_timeout 65;
client_max_body_size 50M;
  • worker_processes — CPU yadro soni bo'yicha avtomatik
  • client_max_body_size — yuklanadigan fayl maksimal hajmi

8. Nginx konfiguratsiyasini tekshirish va qayta yuklash

sudo nginx -t    # syntax tekshiradi
sudo systemctl reload nginx  # konfiguratsiyani qayta yuklash