بکندباز

راه‌اندازی سرور وب با Nginx در لینوکس

در دنیای امروز، راه‌اندازی یک سرور وب کارآمد و سریع یکی از نیازهای اساسی برای توسعه‌دهندگان و مدیران سیستم‌ها است. Nginx، به عنوان یکی از محبوب‌ترین سرورهای وب، به دلیل عملکرد بالا، مصرف منابع کم و انعطاف‌پذیری گسترده، جایگاه ویژه‌ای در این زمینه پیدا کرده است. این مقاله به شما کمک می‌کند تا به راحتی Nginx را روی سیستم‌عامل لینوکس نصب و پیکربندی کنید و یک سرور وب قدرتمند راه‌اندازی نمایید.

Nginx نه تنها به عنوان یک سرور وب، بلکه به عنوان یک پروکسی معکوس، بالانس بار و حتی سرور ایمیل نیز استفاده می‌شود. این سرور وب به دلیل معماری سبک و کارآمد خود، قادر است هزاران اتصال همزمان را با مصرف حداقلی از منابع مدیریت کند. این ویژگی‌ها باعث شده است که Nginx به یکی از گزینه‌های اصلی برای میزبانی وب‌سایت‌های پرترافیک تبدیل شود.

هدف این مقاله این است که شما را با مراحل نصب، پیکربندی و بهینه‌سازی Nginx روی سیستم‌عامل لینوکس آشنا کند. در پایان این مقاله، شما قادر خواهید بود یک سرور وب پایدار و ایمن با استفاده از Nginx راه‌اندازی کنید.

برای دنبال کردن این آموزش، نیاز است که با مفاهیم پایه‌ای لینوکس آشنا باشید و دسترسی به یک سرور لینوکس داشته باشید. همچنین، اطمینان حاصل کنید که دسترسی root یا دسترسی sudo به سرور دارید تا بتوانید تغییرات لازم را اعمال کنید.

در بخش بعدی، به معرفی بیشتر Nginx و مزایای استفاده از آن خواهیم پرداخت.

آشنایی با Nginx

Nginx (تلفظ: “Engine-X”) یک سرور وب با عملکرد بالا و منبع باز است که در سال 2004 توسط ایگور سیسویف توسعه داده شد. این سرور وب به سرعت به دلیل توانایی‌های منحصر به فرد خود در مدیریت ترافیک سنگین و مصرف کم منابع، محبوبیت زیادی در بین توسعه‌دهندگان و مدیران سیستم‌ها پیدا کرد. امروزه، Nginx نه تنها به عنوان یک سرور وب، بلکه به عنوان یک پروکسی معکوس، بالانس بار و حتی سرور ایمیل نیز استفاده می‌شود.

تاریخچه Nginx

Nginx در ابتدا برای حل مشکل C10K (مدیریت 10,000 اتصال همزمان) طراحی شد. این مشکل به دلیل افزایش تقاضا برای وب‌سایت‌های پرترافیک و نیاز به سرورهای وب کارآمدتر به وجود آمد. Nginx با استفاده از یک معماری رویدادمحور (Event-Driven) و غیرمسدودکننده (Non-Blocking)، توانست این مشکل را به طور موثر حل کند. از آن زمان، Nginx به یکی از محبوب‌ترین سرورهای وب در جهان تبدیل شده است.

مزایای استفاده از Nginx

استفاده از Nginx مزایای متعددی دارد که آن را از سایر سرورهای وب مانند Apache متمایز می‌کند. برخی از این مزایا عبارتند از:

  • سرعت و کارایی بالا: Nginx قادر است هزاران اتصال همزمان را با مصرف حداقلی از منابع مدیریت کند.
  • مصرف کم منابع: به دلیل معماری سبک و کارآمد، Nginx منابع سیستم را بهینه‌تر مصرف می‌کند.
  • انعطاف‌پذیری: Nginx از ماژول‌های مختلفی پشتیبانی می‌کند که به شما امکان می‌دهد عملکرد آن را به راحتی گسترش دهید.
  • پشتیبانی از پروکسی معکوس و بالانس بار: Nginx به عنوان یک پروکسی معکوس و بالانس بار نیز استفاده می‌شود که این ویژگی آن را برای استفاده در محیط‌های پیچیده ایده‌آل می‌کند.
  • امنیت بالا: Nginx به طور پیش‌فرض دارای تنظیمات امنیتی قوی است و به راحتی می‌توان آن را برای افزایش امنیت بیشتر پیکربندی کرد.

کاربردهای Nginx

Nginx کاربردهای متنوعی دارد که برخی از مهم‌ترین آن‌ها عبارتند از:

  • سرور وب: Nginx به عنوان یک سرور وب برای میزبانی وب‌سایت‌ها و برنامه‌های وب استفاده می‌شود.
  • پروکسی معکوس: Nginx می‌تواند به عنوان یک پروکسی معکوس برای توزیع ترافیک بین سرورهای مختلف استفاده شود.
  • بالانس بار: Nginx قادر است ترافیک ورودی را بین چندین سرور توزیع کند تا بار روی سرورها به طور مساوی تقسیم شود.
  • فشرده‌سازی و کش: Nginx از فشرده‌سازی محتوا و کش‌سازی پویا پشتیبانی می‌کند که این ویژگی باعث بهبود عملکرد و کاهش زمان بارگذاری صفحات وب می‌شود.
آموزش مرتبط:  نوشتن اسکریپت‌های Python برای مدیریت سرور

در بخش بعدی، به مراحل نصب Nginx روی سیستم‌عامل لینوکس خواهیم پرداخت.

نصب Nginx روی لینوکس

نصب Nginx روی سیستم‌عامل لینوکس یک فرآیند ساده و مستقیم است. با این حال، مراحل نصب ممکن است بسته به توزیع لینوکس شما کمی متفاوت باشد. در این بخش، مراحل نصب Nginx روی توزیع‌های محبوب لینوکس مانند Ubuntu، CentOS و Debian را به شما آموزش می‌دهیم.

1. به‌روزرسانی سیستم

قبل از نصب Nginx، بهتر است سیستم خود را به‌روزرسانی کنید تا از آخرین به‌روزرسانی‌ها و وصله‌های امنیتی اطمینان حاصل کنید. برای این کار، دستورات زیر را در ترمینال اجرا کنید:

  • Ubuntu/Debian:
    sudo apt update
    sudo apt upgrade
    Bash
  • CentOS:
    sudo yum update
    Bash

2. نصب Nginx

پس از به‌روزرسانی سیستم، می‌توانید Nginx را نصب کنید. دستورات نصب برای توزیع‌های مختلف به شرح زیر است:

  • Ubuntu/Debian:
    sudo apt install nginx
    Bash
  • CentOS:
    ابتدا باید مخزن EPEL (Extra Packages for Enterprise Linux) را فعال کنید:

    sudo yum install epel-release
    Bash

    سپس Nginx را نصب کنید:

    sudo yum install nginx
    Bash

3. بررسی نصب موفق

پس از اتمام نصب، می‌توانید وضعیت سرویس Nginx را بررسی کنید تا مطمئن شوید که به درستی نصب شده است.

  • Ubuntu/Debian/CentOS:
    sudo systemctl status nginx
    Bash

اگر Nginx به درستی نصب شده باشد، باید پیامی مشابه زیر مشاهده کنید:

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since ...

4. شروع سرویس Nginx

اگر Nginx به طور خودکار شروع نشده است، می‌توانید آن را به صورت دستی شروع کنید:

  • Ubuntu/Debian/CentOS:
    sudo systemctl start nginx
    Bash

برای اطمینان از اینکه Nginx پس از هر راه‌اندازی مجدد سیستم به طور خودکار شروع شود، دستور زیر را اجرا کنید:

  • Ubuntu/Debian/CentOS:
    sudo systemctl enable nginx
    Bash

5. تست Nginx

برای اطمینان از اینکه Nginx به درستی کار می‌کند، مرورگر خود را باز کرده و آدرس IP سرور خود را وارد کنید. اگر همه چیز به درستی پیکربندی شده باشد، باید صفحه خوش‌آمدگویی Nginx را مشاهده کنید.

اگر آدرس IP سرور خود را نمی‌دانید، می‌توانید از دستور زیر استفاده کنید:

  • Ubuntu/Debian/CentOS:
    curl ifconfig.me
    Bash

یا اگر سرور شما دارای رابط گرافیکی است، می‌توانید از مرورگر روی سرور استفاده کنید و localhost یا 127.0.0.1 را وارد کنید.

در بخش بعدی، به پیکربندی اولیه Nginx و تنظیمات مهم آن خواهیم پرداخت.

پیکربندی Nginx

پس از نصب موفقیت‌آمیز Nginx، مرحله بعدی پیکربندی آن است. Nginx از فایل‌های پیکربندی برای تعیین نحوه رفتار سرور استفاده می‌کند. در این بخش، به بررسی ساختار فایل‌های پیکربندی Nginx و نحوه انجام تنظیمات اولیه می‌پردازیم.

1. ساختار فایل‌های پیکربندی Nginx

فایل‌های پیکربندی Nginx معمولاً در مسیر /etc/nginx/ قرار دارند. ساختار اصلی این فایل‌ها به شرح زیر است:

  • nginx.conf: فایل پیکربندی اصلی Nginx که شامل تنظیمات کلی سرور است.
  • sites-available/: این دایرکتوری شامل فایل‌های پیکربندی برای سایت‌های مختلف است که می‌توانند روی سرور میزبانی شوند.
  • sites-enabled/: این دایرکتوری شامل لینک‌های نمادین به فایل‌های پیکربندی در sites-available/ است که فعال شده‌اند.
  • conf.d/: این دایرکتوری می‌تواند شامل فایل‌های پیکربندی اضافی باشد که به صورت خودکار توسط Nginx بارگیری می‌شوند.

2. پیکربندی اولیه Nginx

برای شروع، فایل پیکربندی اصلی Nginx را باز کنید:

sudo nano /etc/nginx/nginx.conf
Bash

در این فایل، شما می‌توانید تنظیمات کلی مانند تعداد worker processes، محدودیت‌های اتصال و سایر پارامترهای عملکردی را تنظیم کنید. به عنوان مثال:

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    sendfile on;
    keepalive_timeout 65;

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}
nginx

3. پیکربندی Virtual Hosts

برای میزبانی چندین سایت روی یک سرور، می‌توانید از Virtual Hosts استفاده کنید. به عنوان مثال، برای ایجاد یک Virtual Host جدید، مراحل زیر را دنبال کنید:

  1. یک فایل پیکربندی جدید در sites-available/ ایجاد کنید:
    sudo nano /etc/nginx/sites-available/example.com
    Bash
  2. محتوای زیر را به فایل اضافه کنید:
    server {
       listen 80;
       server_name example.com www.example.com;
    
       root /var/www/example.com;
       index index.html;
    
       location / {
           try_files $uri $uri/ =404;
       }
    }
    nginx
  3. یک لینک نمادین از فایل پیکربندی در sites-available/ به sites-enabled/ ایجاد کنید:
    sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
    Bash
  4. پیکربندی Nginx را تست کنید تا مطمئن شوید خطایی وجود ندارد:
    sudo nginx -t
    Bash
  5. در صورت موفقیت‌آمیز بودن تست، سرویس Nginx را مجدداً راه‌اندازی کنید:
    sudo systemctl reload nginx
    Bash

4. تنظیمات امنیتی

برای افزایش امنیت Nginx، می‌توانید از تنظیمات زیر استفاده کنید:

  • محدود کردن دسترسی: می‌توانید دسترسی به بخش‌های خاصی از سایت را محدود کنید. به عنوان مثال:
    location /admin {
      allow 192.168.1.0/24;
      deny all;
    }
    nginx
  • استفاده از SSL: برای رمزگذاری ترافیک، می‌توانید از گواهی SSL استفاده کنید. به عنوان مثال:
    server {
      listen 443 ssl;
      server_name example.com;
    
      ssl_certificate /etc/ssl/certs/example.com.crt;
      ssl_certificate_key /etc/ssl/private/example.com.key;
    
      root /var/www/example.com;
      index index.html;
    }
    nginx
  • فشرده‌سازی Gzip: برای بهبود عملکرد، می‌توانید فشرده‌سازی Gzip را فعال کنید:
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    nginx

در بخش بعدی، به مدیریت و نگهداری Nginx خواهیم پرداخت.

آموزش مرتبط:  کامپایل و نصب برنامه‌ها از سورس کد

مدیریت و نگهداری Nginx

پس از نصب و پیکربندی Nginx، مدیریت و نگهداری آن به منظور اطمینان از عملکرد بهینه و پایدار سرور بسیار مهم است. در این بخش، به بررسی دستورات و روش‌های مدیریتی Nginx می‌پردازیم که به شما کمک می‌کند تا سرور خود را به طور موثر مدیریت کنید.

1. شروع، توقف و راه‌اندازی مجدد Nginx

مدیریت سرویس Nginx از طریق دستورات systemctl انجام می‌شود. در ادامه، دستورات اصلی برای مدیریت سرویس Nginx آورده شده است:

  • شروع سرویس Nginx:
    sudo systemctl start nginx
    Bash
  • توقف سرویس Nginx:
    sudo systemctl stop nginx
    Bash
  • راه‌اندازی مجدد سرویس Nginx:
    sudo systemctl restart nginx
    Bash
  • بارگذاری مجدد تنظیمات Nginx (بدون قطع کامل سرویس):
    sudo systemctl reload nginx
    Bash
  • بررسی وضعیت سرویس Nginx:
    sudo systemctl status nginx
    Bash

2. بررسی و مدیریت لاگ‌ها

Nginx به طور پیش‌فرض لاگ‌های دسترسی (Access Logs) و خطاها (Error Logs) را در مسیر /var/log/nginx/ ذخیره می‌کند. این لاگ‌ها برای عیب‌یابی و نظارت بر عملکرد سرور بسیار مفید هستند.

  • دسترسی به لاگ‌های دسترسی:
    sudo tail -f /var/log/nginx/access.log
    Bash
  • دسترسی به لاگ‌های خطا:
    sudo tail -f /var/log/nginx/error.log
    Bash

برای مدیریت حجم لاگ‌ها، می‌توانید از ابزار logrotate استفاده کنید. این ابزار به طور خودکار لاگ‌ها را چرخش داده و فایل‌های قدیمی را فشرده یا حذف می‌کند.

3. به‌روزرسانی Nginx

برای اطمینان از امنیت و عملکرد بهینه، مهم است که Nginx را به آخرین نسخه به‌روزرسانی کنید. مراحل به‌روزرسانی بسته به توزیع لینوکس شما متفاوت است:

  • Ubuntu/Debian:
    sudo apt update
    sudo apt upgrade nginx
    Bash
  • CentOS:
    sudo yum update nginx
    Bash

پس از به‌روزرسانی، بهتر است سرویس Nginx را مجدداً راه‌اندازی کنید تا تغییرات اعمال شوند:

sudo systemctl restart nginx
Bash

4. پشتیبان‌گیری از فایل‌های پیکربندی

پیش از اعمال هرگونه تغییر در فایل‌های پیکربندی Nginx، بهتر است از آن‌ها پشتیبان بگیرید. این کار به شما امکان می‌دهد در صورت بروز مشکل، به سرعت به تنظیمات قبلی بازگردید.

  • پشتیبان‌گیری از فایل‌های پیکربندی:
    sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup
    sudo cp -r /etc/nginx/sites-available /etc/nginx/sites-available.backup
    sudo cp -r /etc/nginx/sites-enabled /etc/nginx/sites-enabled.backup
    Bash
  • بازگرداندن پشتیبان:
    sudo cp /etc/nginx/nginx.conf.backup /etc/nginx/nginx.conf
    sudo cp -r /etc/nginx/sites-available.backup /etc/nginx/sites-available
    sudo cp -r /etc/nginx/sites-enabled.backup /etc/nginx/sites-enabled
    Bash

5. نظارت بر عملکرد Nginx

برای نظارت بر عملکرد Nginx و اطمینان از سلامت سرور، می‌توانید از ابزارهایی مانند htop، nginx-status و یا ابزارهای مانیتورینگ خارجی مانند Prometheus و Grafana استفاده کنید.

  • نصب htop:
    sudo apt install htop  # برای Ubuntu/Debian
    sudo yum install htop  # برای CentOS
    Bash
  • استفاده از htop:
    htop
    Bash

در بخش بعدی، به بهینه‌سازی عملکرد Nginx خواهیم پرداخت.

بهینه‌سازی عملکرد Nginx

بهینه‌سازی عملکرد Nginx یکی از مراحل مهم در راه‌اندازی یک سرور وب کارآمد است. با اعمال تنظیمات مناسب، می‌توانید سرعت پاسخگویی سرور را افزایش داده و مصرف منابع را بهینه‌سازی کنید. در این بخش، به برخی از روش‌های کلیدی برای بهینه‌سازی Nginx می‌پردازیم.

1. تنظیمات Worker Processes و Connections

Nginx از یک معماری چند پردازه‌ای (Multi-Process) استفاده می‌کند که به آن اجازه می‌دهد تا ترافیک را به طور موثر مدیریت کند. برای بهینه‌سازی عملکرد، می‌توانید تعداد worker processes و اتصالات همزمان را تنظیم کنید.

  • تنظیم تعداد Worker Processes:
    تعداد worker processes باید برابر با تعداد هسته‌های CPU سرور شما باشد. برای این کار، فایل nginx.conf را باز کرده و مقدار worker_processes را تنظیم کنید:

    worker_processes auto;  # به صورت خودکار تعداد هسته‌های CPU را تشخیص می‌دهد
    nginx
  • تنظیم Worker Connections:
    تعداد اتصالات همزمان هر worker process را می‌توانید با تنظیم worker_connections در بلوک events کنترل کنید:

    events {
      worker_connections 1024;
    }
    nginx

2. فعال‌سازی کش‌سازی

کش‌سازی می‌تواند به طور قابل توجهی عملکرد سرور را بهبود بخشد، به ویژه برای وب‌سایت‌هایی که محتوای ثابت یا نیمه‌ثابت ارائه می‌دهند.

  • کش‌سازی فایل‌های استاتیک:
    برای کش‌سازی فایل‌های استاتیک مانند تصاویر، CSS و JavaScript، می‌توانید از دستورات زیر در پیکربندی Nginx استفاده کنید:

    location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
      expires 30d;
      add_header Cache-Control "public, no-transform";
    }
    nginx
  • کش‌سازی پروکسی:
    اگر از Nginx به عنوان پروکسی معکوس استفاده می‌کنید، می‌توانید کش‌سازی پاسخ‌های سرورهای پشتیبان را فعال کنید:

    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
    
    server {
      location / {
          proxy_cache my_cache;
          proxy_pass http://backend;
          proxy_cache_valid 200 302 10m;
          proxy_cache_valid 404 1m;
      }
    }
    nginx

3. فشرده‌سازی Gzip

فشرده‌سازی Gzip می‌تواند حجم داده‌های ارسالی به کلاینت را کاهش داده و زمان بارگذاری صفحات را بهبود بخشد.

  • فعال‌سازی Gzip:
    برای فعال‌سازی Gzip، فایل nginx.conf را باز کرده و تنظیمات زیر را اضافه کنید:

    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    gzip_min_length 1000;
    gzip_comp_level 6;
    gzip_proxied any;
    gzip_vary on;
    nginx

4. استفاده از HTTP/2

HTTP/2 یک پروتکل پیشرفته است که عملکرد سرور را بهبود می‌بخشد. برای فعال‌سازی HTTP/2، پیکربندی زیر را به بلوک server اضافه کنید:

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;

    root /var/www/example.com;
    index index.html;
}
nginx

5. تنظیمات اتصال Keepalive

فعال‌سازی Keepalive می‌تواند تعداد اتصالات TCP را کاهش داده و عملکرد سرور را بهبود بخشد.

  • تنظیم Keepalive Timeout:
    keepalive_timeout 65;
    keepalive_requests 100;
    nginx

6. استفاده از ماژول‌های اضافی

Nginx از ماژول‌های مختلفی پشتیبانی می‌کند که می‌توانند عملکرد سرور را بهبود بخشند. برخی از این ماژول‌ها عبارتند از:

  • ngx_pagespeed: برای بهینه‌سازی خودکار صفحات وب.
  • ngx_brotli: برای فشرده‌سازی پیشرفته با استفاده از الگوریتم Brotli.
  • ngx_cache_purge: برای مدیریت کش‌سازی.
آموزش مرتبط:  مدیریت دسترسی‌ها با SELinux و AppArmor

برای نصب این ماژول‌ها، ممکن است نیاز به کامپایل مجدد Nginx داشته باشید.

7. نظارت و تنظیمات مداوم

بهینه‌سازی یک فرآیند مداوم است. با استفاده از ابزارهای مانیتورینگ مانند Prometheus، Grafana و یا ابزارهای داخلی Nginx مانند stub_status، می‌توانید عملکرد سرور را به طور مداوم نظارت کرده و تنظیمات لازم را اعمال کنید.

در بخش بعدی، به نتیجه‌گیری و جمع‌بندی مطالب ارائه شده خواهیم پرداخت.

نتیجه‌گیری

در این مقاله، مراحل کامل راه‌اندازی سرور وب با استفاده از Nginx روی سیستم‌عامل لینوکس را بررسی کردیم. از نصب اولیه و پیکربندی پایه تا بهینه‌سازی عملکرد و مدیریت سرور، تمامی جنبه‌های ضروری برای راه‌اندازی یک سرور وب کارآمد و پایدار پوشش داده شد. در ادامه، خلاصه‌ای از مراحل و نکات کلیدی ارائه شده را مرور می‌کنیم:

  1. نصب Nginx: نحوه نصب Nginx روی توزیع‌های مختلف لینوکس مانند Ubuntu، CentOS و Debian را یاد گرفتید.
  2. پیکربندی اولیه: با ساختار فایل‌های پیکربندی Nginx آشنا شدید و نحوه تنظیم Virtual Hosts و تنظیمات امنیتی را فرا گرفتید.
  3. مدیریت و نگهداری: دستورات اصلی برای مدیریت سرویس Nginx، بررسی لاگ‌ها و به‌روزرسانی سرور را یاد گرفتید.
  4. بهینه‌سازی عملکرد: روش‌های مختلف برای بهبود عملکرد Nginx، از جمله کش‌سازی، فشرده‌سازی Gzip و استفاده از HTTP/2 را بررسی کردید.

گام‌های بعدی

برای ادامه یادگیری و بهبود مهارت‌های خود در زمینه Nginx، می‌توانید منابع زیر را مطالعه کنید:

  • مستندات رسمی Nginx: https://nginx.org/en/docs/
  • مقالات آموزشی پیشرفته: برای یادگیری تنظیمات پیشرفته‌تر و استفاده از ماژول‌های اضافی.
  • ابزارهای مانیتورینگ: استفاده از ابزارهایی مانند Prometheus و Grafana برای نظارت بر عملکرد سرور.

با دنبال کردن این مراحل و استفاده از منابع یادگیری، می‌توانید یک سرور وب قدرتمند و ایمن با استفاده از Nginx راه‌اندازی و مدیریت کنید. امیدواریم این مقاله برای شما مفید بوده باشد و بتوانید از آن در پروژه‌های خود استفاده کنید.

backendbaz

مدیر وب سایت بکندباز

دیدگاه‌ها

*
*