Nginx: نصب و پیکربندی روی Ubuntu 22.04، 24.04 و 25.04

Nginx یکی از محبوب‌ترین وب‌سرورها در جهان است و بیش از 33% وب‌سایت‌های جهان را پشتیبانی می‌کند. این وب‌سرور سبک، با کارایی بالا، به خوبی به‌عنوان وب‌سرور و پراکسی معکوس عمل می‌کند و میزبان برخی از پرترافیک‌ترین سایت‌هاست. این راهنمای جامع نصب و پیکربندی Nginx روی Ubuntu 22.04، 24.04 و 25.04 را شامل می‌شود و شامل تنظیم فایروال، سخت‌سازی امنیتی، بهینه‌سازی عملکرد و رفع عیب‌های رایج است.

پیش‌نیازها

قبل از شروع این راهنما باید:

  • یک حساب کاربری ParminCloud داشته باشید و از طریق یک کاربر غیر-root وارد سرور شوید.
  • در ParminCloud می‌توانید تنظیم دامنه خود را انجام دهید.

هنگامی که حساب در دسترس است، با کاربر غیر-root وارد سرور شوید تا کار را آغاز کنید.

نصب Nginx

Nginx در مخازن پیش‌فرض اوبونتو برای نسخه‌های پشتیبانی‌شده موجود است. آن را با سیستم بسته‌بندی apt نصب می‌کنیم تا آخرین نسخه پایدار دریافت شود.

ابتدا فهرست بسته‌های محلی را به‌روز کنید تا از دسترسی به جدیدترین لیست بسته‌ها اطمینان حاصل کنید:

sudo apt update

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

sudo apt install nginx

هنگام درخواست برای تأیید نصب، Y را فشار دهید. اگر از شما خواسته شد تا سرویسی را راه‌اندازی مجدد کنید، ENTER را فشار دهید تا ادامه یابد. apt Nginx و تمام وابستگی‌های لازم را نصب خواهد کرد.

برای مشاهده نسخه نصب‌شده Nginx:

nginx -v

بررسی نصب

برای تأیید اینکه Nginx به درستی نصب شده است، وضعیت سرویس را بررسی کنید:

sudo systemctl status nginx

اگر خروجی نشان داد سرویس فعال است، نصب موفق بوده است.

پیکربندی فایروال (UFW)

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

برای فهرست کردن پیکربندی‌های اپلیکیشنی که ufw می‌تواند با آنها کار کند، تایپ کنید:

sudo ufw app list

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

سه پروفایل برای Nginx موجود است:

  • Nginx Full
  • Nginx HTTP
  • Nginx HTTPS

توصیه می‌شود که محدودکننده‌ترین پروفایلی که هنوز ترافیک مورد نیاز شما را می‌پذیرد فعال کنید. در حال حاضر فقط نیاز به اجازه ترافیک روی پورت 80 داریم.

به‌این‌ترتیب می‌توانید HTTP را فعال کنید:

sudo ufw allow 'Nginx HTTP'

همچنین توجه داشته باشید که باید اجازهٔ اتصال OpenSSH را هم فعال کنید تا دسترسی از طریق کنسول وب یا SSH حفظ شود:

sudo ufw allow OpenSSH

می‌توانید تغییر را با دستور زیر تأیید کنید:

sudo ufw status

خروجی نشان می‌دهد که ترافیک HTTP مجاز است و همچنین OpenSSH مجاز است.

تست Nginx

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

با سیستم init systemd می‌توانیم بررسی کنیم سرویس در حال اجراست:

sudo systemctl status nginx

بهترین روش تست واقعی درخواست یک صفحه از Nginx است.

برای مشاهده صفحهٔ پیش‌فرض Nginx کافیست آدرس IP سرور خود را در مرورگر وارد کنید. اگر آدرس IP خود را نمی‌دانید، می‌توانید از ابزار icanhazip.com برای یافتن آدرس عمومی خود استفاده کنید:

curl http://icanhazip.com

هنگامی که آدرس IP سرور را دارید، آن را در نوار آدرس مرورگر وارد کنید. باید صفحهٔ پیش‌فرض Nginx را ببینید.

اگر این صفحه را مشاهده می‌کنید، سرور شما به‌درستی اجرا می‌شود و آمادهٔ مدیریت است.

دستورات مدیریت پایه

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

  • برای متوقف کردن وب‌سرور:
sudo systemctl stop nginx
  • برای شروع وب‌سرور اگر متوقف شده باشد:
sudo systemctl start nginx
  • برای متوقف و سپس راه‌اندازی مجدد سرویس:
sudo systemctl restart nginx
  • اگر تنها در حال اعمال تغییرات پیکربندی هستید، Nginx اغلب می‌تواند بدون قطع اتصال، بارگذاری مجدد شود:
sudo systemctl reload nginx
  • به‌طور پیش‌فرض، Nginx طوری پیکربندی شده که هنگام بوت سرور به‌صورت خودکار اجرا شود. اگر نمی‌خواهید این رفتار رخ دهد، می‌توانید آن را غیرفعال کنید:
sudo systemctl disable nginx
  • برای فعال‌سازی مجدد شروع خودکار در بوت:
sudo systemctl enable nginx

تنظیم سرور بلوک‌ها (Server Blocks)

هنگامی که از Nginx استفاده می‌کنید، server blockها (مشابه virtual hosts در آپاچی) می‌توانند برای کپسوله کردن تنظیمات و میزبانی چندین دامنه از یک سرور استفاده شوند. در اینجا از دامنهٔ نمونه your_domain استفاده می‌کنیم؛ شما باید آن را با نام دامنهٔ خود جایگزین کنید.

Nginx روی Ubuntu یک server block پیش‌فرض فعال دارد که محتوا را از دایرکتوری /var/www/html سرو می‌کند. برای میزبانی چند سایت بهتر است ساختار دایرکتوری را در /var/www برای دامنهٔ خود ایجاد کنیم و /var/www/html را به‌عنوان پیش‌فرض نگه داریم.

دایرکتوری برای your_domain را ایجاد کنید (از پرچم -p برای ایجاد پوشه‌های والد لازم استفاده می‌شود):

sudo mkdir -p /var/www/your_domain/html

سپس مالکیت دایرکتوری را به کاربر فعلی ($USER) اختصاص دهید:

sudo chown -R $USER:$USER /var/www/your_domain/html

اگر umask خود را تغییر نداده‌اید، مجوزهای روت وب‌سایت شما باید صحیح باشند. برای اطمینان از اینکه مالک می‌تواند بخواند، نوشتن و اجرا داشته باشد و گروه و دیگران تنها خواندن و اجرا داشته باشند، دستور زیر را اجرا کنید:

sudo chmod -R 755 /var/www/your_domain

یک فایل نمونه index.html با ویرایشگر مورد علاقه‌تان ایجاد کنید:

nano /var/www/your_domain/html/index.html

داخل آن HTML نمونه زیر را اضافه کنید و سپس ذخیره و ببندید:

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Welcome to your_domain!</title>
  </head>
  <body>
    <h1>Success! The your_domain server block is working!</h1>
  </body>
</html>

برای اینکه Nginx این محتوا را سرو کند، لازم است که یک server block با دستورات مناسب ایجاد کنیم. به‌جای تغییر فایل پیکربندی پیش‌فرض، یک فایل جدید در /etc/nginx/sites-available/your_domain بسازید:

sudo nano /etc/nginx/sites-available/your_domain

بلوک پیکربندی زیر را درون فایل قرار دهید (مشابه پیش‌فرض اما با root و server_name به‌روزرسانی شده):

server {
    listen 80;
    listen [::]:80;

    root /var/www/your_domain/html;
    index index.html index.htm index.nginx-debian.html;

    server_name your_domain www.your_domain;

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

توجه کنید که root به دایرکتوری جدید و server_name به دامنهٔ شما به‌روزرسانی شده است.

برای فعال‌سازی این فایل، یک پیوند نمادین (symlink) از آن به sites-enabled ایجاد کنید، که Nginx هنگام راه‌اندازی آن را می‌خواند:

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

نکته: Nginx از رویهٔ معمولی استفاده می‌کند که با symlinkها مشخص می‌شود که کدام server blockها فعال هستند. ایجاد یک symlink مثل ساختن یک میانبر روی دیسک است، بنابراین می‌توانید بعداً میانبر را از sites-enabled حذف کنید بدون اینکه فایل اصلی در sites-available حذف شود.

دو server block حالا فعال هستند و بر اساس دستورات listen و server_name به درخواست‌ها پاسخ می‌دهند.

تنظیم server_names_hash_bucket_size

برای جلوگیری از مشکل احتمالی hash bucket memory که می‌تواند از افزودن server nameهای بیشتر ایجاد شود، لازم است یک مقدار در /etc/nginx/nginx.conf را تغییر دهیم. فایل را باز کنید:

sudo nano /etc/nginx/nginx.conf

دنبال server_names_hash_bucket_size بگردید و علامت # را حذف کنید تا خط از حالت کامنت خارج شود. اگر از nano استفاده می‌کنید، با CTRL+W می‌توانید جستجو کنید.

فایل را ذخیره و ببندید.

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

sudo nginx -t

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

sudo systemctl restart nginx

حالا Nginx باید دامنهٔ شما را سرو کند. می‌توانید با مراجعه به http://your_domain آن را تست کنید که باید صفحهٔ نمونهٔ شما نمایش داده شود.

سخت‌سازی امنیت و بهینه‌سازی عملکرد

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

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

sudo nano /etc/nginx/nginx.conf

در بلاک http، این دستورات امنیتی را اضافه کنید:

# Security directives (examples)
server_tokens off;
client_max_body_size 8m;

این موارد نمونه هستند. بر اساس نیازهای امنیتی خود تنظیمات مناسب را اضافه کنید.

برای بهبود عملکرد، این تنظیمات را در /etc/nginx/nginx.conf اضافه کنید:

# Performance optimizations (examples)
worker_processes auto;
worker_connections 1024;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;

پیکربندی را تست کنید:

sudo nginx -t

اگر تست پاس شد، Nginx را بارگذاری مجدد کنید:

sudo systemctl reload nginx

برای نصب گواهی SSL آماده‌سازی کنید.

مدیریت فایل‌ها و ساختار

اکنون که با مدیریت سرویس آشنا هستید، بهتر است با چند دایرکتوری و فایل مهم آشنا شوید.

بهترین روش‌های امنیتی برای سخت‌سازی Nginx

چند بهترین روش امنیتی را دنبال کنید تا نصب Nginx خود را محکم کنید:

  • به‌روزرسانی مرتب بسته‌ها
  • محدود کردن دسترسی‌ها و مالکیت فایل‌ها
  • فعال‌سازی فایروال و اختصاص قوانین مناسب
  • اضافه کردن هدرهای امنیتی

هدرهای زیر را به server block خود اضافه کنید تا امنیت افزایش یابد:

add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";

برای محدود کردن نرخ درخواست‌ها، این پیکربندی را به server block اضافه کنید:

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

server {
    ...
    location / {
        limit_req zone=one burst=5;
        ...
    }
}

مدیریت سرویس با systemctl

از دستورات systemctl برای مدیریت سرویس Nginx استفاده کنید:

sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx
sudo systemctl enable nginx
sudo systemctl disable nginx

برای بررسی وضعیت Nginx از این دستورات استفاده کنید:

sudo systemctl status nginx
sudo journalctl -u nginx

پروفایل‌های UFW برای Nginx

UFW سه پروفایل Nginx برای سطوح امنیتی مختلف فراهم می‌کند:

  • Nginx Full (HTTP و HTTPS)
  • Nginx HTTP (فقط پورت 80)
  • Nginx HTTPS (فقط پورت 443)

فایل‌ها و مسیرهای مهم

فایل پیکربندی اصلی در /etc/nginx/nginx.conf قرار دارد. پیکربندی‌های مربوط به سایت‌ها در پوشه‌های زیر نگهداری می‌شوند:

  • /etc/nginx/sites-available/
  • /etc/nginx/sites-enabled/

یک server block را در /etc/nginx/sites-available/your-domain پیکربندی کنید و سپس آن را با یک symlink به sites-enabled فعال نمایید.

رفع عیب‌های رایج

مراحل معمول برای عیب‌یابی را بررسی کنید:

  • بررسی خطاهای نحوی: sudo nginx -t
  • بررسی لاگ‌ها: /var/log/nginx/error.log و /var/log/nginx/access.log
  • اطمینان از فعال بودن پورت‌ها در فایروال
  • بررسی رکوردهای DNS و تطابق IP با سرور

جمع‌بندی

حالا یک وب‌سرور Nginx روی Ubuntu 22.04، 24.04، یا 25.04 نصب و پیکربندی شده است. در این راهنما فرایند کامل راه‌اندازی Nginx از نصب اولیه روی مخازن رسمی اوبونتو تا سخت‌سازی امنیتی و بهینه‌سازی عملکرد مرور شد. شما نحوهٔ پیکربندی فایروال با UFW برای امن‌سازی وب‌سرور را یاد گرفتید، مدیریت سرویس Nginx با systemd را آموختید و server blockها را برای میزبانی چند دامنه پیکربندی کردید. همچنین آشنایی لازم برای راه‌اندازی پراکسی معکوس، متعادل‌سازی بار و رفع عیب از طریق تحلیل لاگ‌ها را کسب کردید.

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

از اینکه با پارمین‌کلود همراهید سپاسگزاریم.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *