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 -yCentOS/RHEL tizimida:
sudo yum install epel-release -y
sudo yum install nginx -yO'rnatilganini tekshirish:
nginx -v2.Nginx ishga tushirish va avtomatik boshlash
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginxstart— serverni ishga tushiradienable— tizim ishga tushganda avtomatik boshlanishini ta'minlaydistatus— 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 tinglashserver_name— domen nomini ko'rsatadiroot— sayt fayllari joylashgan kataloglocation /— asosiy URL yo'llarini aniqlayditry_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.comKeyin avtomatik SSL yangilanishini sozlash:
sudo systemctl status certbot.timer6.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 manziliproxy_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 avtomatikclient_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