اگه با سرور لینوکس کار کرده باشید، احتمالا اسم Nginx به گوشتون خورده.
Nginx یکی از محبوبترین وبسرورهای دنیاست که به خاطر سرعت بالا، مصرف کم منابع و عملکرد خوب در مدیریت تعداد زیادی درخواست، روی خیلی از سرورها استفاده میشه.
در این مقاله از بلاگ رهام کلود قراره قدمبهقدم با نصب nginx در لینوکس آشنا بشیم و ببینیم چطور میشه Nginx رو روی دو توزیع محبوب یعنی Ubuntu و CentOS نصب و پیکربندی کرد.
نگران نباشید؛ قرار نیست وارد تنظیمات پیچیده بشیم. همه چیز رو ساده و مرحلهبهمرحله پیش میبریم؛ با ما همراه باشید.

Nginx و کاربرد آن
قبل از اینکه بریم سراغ نصب، بهتره خیلی کوتاه بدونیم Nginx اصلا چه کاری انجام میده.
Nginx یک وبسرور قدرتمنده که میتونه درخواستهای کاربران رو دریافت کنه و محتوای سایت رو به اونها نمایش بده.
البته کاربرد Nginx فقط به وبسرور محدود نمیشه و میشه ازش به عنوان Reverse Proxy ،Load Balancer و حتی برای مدیریت ترافیک بین چند سرور استفاده کرد.
مثلا وقتی کاربر آدرس سایت شما رو داخل مرورگر وارد میکنه، درخواست به سرور ارسال میشه.
Nginx این درخواست رو دریافت میکنه و فایل موردنظر مثل HTML، CSS، JavaScript یا تصاویر رو به کاربر برمیگردونه.
یکی از دلایلی که خیلیها سراغ Nginx میرن، عملکرد خوب اون در زمان دریافت درخواستهای همزمان زیاده.
پیشنیازهای نصب Nginx
برای نصب Nginx در لینوکس، اول باید به یک سرور لینوکسی دسترسی داشته باشید.
در این آموزش از دو سیستمعامل استفاده میکنیم؛ Ubuntu و CentOS.
همچنین بهتره دسترسی Root داشته باشید یا کاربری که امکان اجرای دستورات با sudo رو داشته باشه.
برای اتصال به سرور هم معمولا از SSH استفاده میشه. مثلا:
ssh root@SERVER-IP
(به جای SERVER-IP باید آیپی سرور خودتون رو وارد کنید.)
نصب Nginx در Ubuntu
اگه سرور شما Ubuntu هست، نصب Nginx خیلی ساده انجام میشه.
اول بهتره لیست پکیجها رو بهروزرسانی کنیم:
sudo apt update
بعد از اون Nginx رو نصب میکنیم:
sudo apt install nginx -y
چند لحظه صبر کنید تا نصب کامل بشه.
حالا برای اینکه مطمئن بشیم Nginx درست نصب شده، وضعیت سرویس رو بررسی میکنیم:
sudo systemctl status nginx
اگر همه چیز درست باشه، باید وضعیت سرویس به شکل `active (running)` نمایش داده بشه.
فعال کردن Nginx هنگام روشن شدن سرور
بهتره کاری کنیم که Nginx بعد از ریاستارت شدن سرور، خودش به صورت خودکار اجرا بشه.
برای این کار دستور زیر رو وارد کنید:
sudo systemctl enable nginx
اگه بخوایم همین الان هم سرویس رو اجرا کنیم، میتونیم از دستور زیر استفاده کنیم:
sudo systemctl start nginx
برای ریاستارت کردن Nginx هم:
sudo systemctl restart nginx
و اگر بخوایم موقتا سرویس رو متوقف کنیم:
sudo systemctl stop nginx
تست Nginx در Ubuntu
حالا که Nginx نصب شده، مرورگر خودتون رو باز کنید و آیپی سرور رو وارد کنید. مثلا:
http://SERVER-IP
اگر نصب به درستی انجام شده باشه، صفحه پیشفرض Nginx رو مشاهده میکنید.
این صفحه یعنی وبسرور شما به درستی نصب شده و در حال اجراست.
نصب Nginx در CentOS
حالا بریم سراغ CentOS.
نکته مهم اینه که در نسخههای جدید CentOS Stream و توزیعهای مشابه مثل AlmaLinux و Rocky Linux ممکنه روش نصب کمی متفاوت باشه.
اما برای محیطهایی که از dnf استفاده میکنن، معمولا روند کلی به شکل زیره:
اول سیستم رو بهروزرسانی میکنیم:
sudo dnf update -y
بعد Nginx رو نصب میکنیم:
sudo dnf install nginx -y
بعد از نصب، سرویس Nginx رو اجرا میکنیم:
sudo systemctl start nginx
حالا وضعیت سرویس رو بررسی میکنیم:
sudo systemctl status nginx
اگر عبارت active (running) رو مشاهده کردید، یعنی Nginx با موفقیت اجرا شده.
برای اینکه بعد از ریاستارت سرور هم Nginx به صورت خودکار اجرا بشه، این دستور رو بزنید:
sudo systemctl enable nginx
باز کردن پورت HTTP و HTTPS در فایروال CentOS
یکی از مشکلات رایجی که ممکنه بعد از نصب Nginx باهاش مواجه بشید، باز نبودن پورتهای وب در فایرواله.
اگه روی سرور شما `firewalld` فعال باشه، باید پورتهای HTTP و HTTPS رو باز کنید.
برای باز کردن پورت 80:
sudo firewall-cmd –permanent –add-service=http
برای باز کردن پورت 443:
sudo firewall-cmd –permanent –add-service=https
بعد از اون فایروال رو Reload کنید:
sudo firewall-cmd –reload
حالا دوباره آیپی سرور رو داخل مرورگر وارد کنید:
http://SERVER-IP
اگه همه چیز درست باشه، صفحه پیشفرض Nginx نمایش داده میشه.
پیکربندی ساده Nginx
حالا که نصب تموم شد، بریم سراغ بخش جذابتر ماجرا؛ یعنی پیکربندی Nginx.
فایلهای تنظیمات Nginx بسته به سیستمعامل ممکنه کمی متفاوت باشن، اما فایل اصلی تنظیمات معمولاً اینجاست:
/etc/nginx/nginx.conf
برای دیدن محتوای فایل میتونید از دستور زیر استفاده کنید:
sudo nano /etc/nginx/nginx.conf
البته بهتره قبل از هر تغییری، از فایل تنظیمات بکاپ بگیرید:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup
این کار باعث میشه اگر تنظیمات رو اشتباه کردید، بتونید به نسخه قبلی برگردید.
ساخت یک سایت ساده با Nginx
فرض کنید میخوایم یک سایت با دامنه زیر روی سرور راهاندازی کنیم:
example.com
اول یک پوشه برای سایت ایجاد میکنیم:
sudo mkdir -p /var/www/example.com
بعد مالکیت پوشه رو تنظیم میکنیم:
sudo chown -R $USER:$USER /var/www/example.com
حالا یک فایل HTML ساده میسازیم:
nano /var/www/example.com/index.html
داخل فایل میتونیم این کد رو قرار بدیم:
<!DOCTYPE html>
<html>
<head>
<meta charset=”UTF-8″>
<title>Example Website</title>
</head>
<body>
<h1>سلام! سایت من با Nginx اجرا میشه.</h1>
</body>
</html>
فایل رو ذخیره کنید.
ساخت تنظیمات سایت در Nginx
حالا باید به Nginx بگیم درخواستهای مربوط به دامنه `example.com` رو از کجا سرو کنه.
در Ubuntu میتونیم یک فایل تنظیمات برای سایت ایجاد کنیم:
sudo nano /etc/nginx/sites-available/example.com
و این تنظیمات رو داخلش قرار بدیم:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
در این تنظیمات، server_name مشخص میکنه این کانفیگ مربوط به چه دامنهایه و root هم مسیر فایلهای سایت رو مشخص میکنه.
حالا باید کانفیگ سایت رو فعال کنیم:
/sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled
بعد بهتره تنظیمات Nginx رو تست کنیم:
sudo nginx -t
اگر پیام زیر یا مشابه اون رو دیدید، یعنی تنظیمات مشکلی نداره:
syntax is ok
test is successful
حالا Nginx رو Reload میکنیم:
sudo systemctl reload nginx
اگر DNS دامنه هم به آیپی سرور اشاره کنه، با وارد کردن دامنه در مرورگر باید سایت خودتون رو ببینید.
مثال راهاندازی سایت با Nginx
فرض کنید یک سرور Ubuntu دارید و میخواید سایت mysite.com رو روی اون اجرا کنید.
مراحل کلی به این شکله:
گام اول: نصب Nginx
sudo apt update
sudo apt install nginx -y
مرحله دوم: ساخت پوشه سایت
sudo mkdir -p /var/www/mysite.com
مرحله سوم: ایجاد صفحه اصلی
sudo nano /var/www/mysite.com/index.html
مرحله چهارم: ساخت کانفیگ Nginx
sudo nano /etc/nginx/sites-available/mysite.com
تنظیمات:
server {
listen 80;
server_name mysite.com www.mysite.com;
root /var/www/mysite.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
مرحله پنجم: فعال کردن سایت
sudo ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/
مرحله ششم: بررسی تنظیمات
sudo nginx -t
مرحله هفتم: اعمال تغییرات
sudo systemctl reload nginx
حالا اگر DNS دامنه mysite.com رو به آیپی سرور وصل کرده باشید، سایت شما باید از طریق مرورگر قابل دسترسی باشه.
خطاهای رایج بعد از نصب Nginx
گاهی ممکنه Nginx نصب بشه، اما سایت باز نشه. در این شرایط چند مورد رو بررسی کنید.
-Nginx اجرا نیست
وضعیت سرویس رو بررسی کنید:
sudo systemctl status nginx
اگر اجرا نبود:
sudo systemctl start nginx
-پورت 80 یا 443 بسته است
فایروال سرور رو بررسی کنید و مطمئن بشید پورتهای موردنیاز باز هستن.
-DNS دامنه درست تنظیم نشده
اگر دامنه دارید، رکورد A باید به آیپی سرور شما اشاره کنه. مثلا:
example.com → SERVER-IP
ممکنه بعد از تغییر DNS کمی زمان لازم باشه تا تغییرات در همهجا اعمال بشه.
-کانفیگ Nginx اشتباه است
قبل از Reload یا Restart کردن Nginx، همیشه کانفیگ رو تست کنید:
sudo nginx -t
اگر خطایی وجود داشته باشه، معمولاً همین دستور کمک میکنه محل مشکل رو پیدا کنید.
-پورت 80 توسط سرویس دیگری استفاده شده
گاهی Apache یا یک وبسرور دیگه روی پورت 80 در حال اجراست. برای بررسی میتونید از دستور زیر استفاده کنید:
sudo ss -tulpn | grep :80
اگر سرویس دیگری پورت 80 رو اشغال کرده باشه، باید مشخص کنید که میخواید از همون سرویس استفاده کنید یا Nginx رو جایگزینش کنید.
جمعبندی
همونطور که دیدید، نصب nginx در لینوکس کار پیچیدهای نیست و با چند دستور ساده میشه این وبسرور رو روی Ubuntu یا CentOS راهاندازی کرد.
بعد از نصب Nginx، مهمترین بخش ماجرا پیکربندی درست اون برای سایتها، دامنهها و سرویسهای مختلفه.
شما میتونید از Nginx برای میزبانی سایتهای استاتیک استفاده کنید یا اون رو به عنوان Reverse Proxy جلوی سرویسهایی مثل Node.js، Python و PHP-FPM قرار بدید.
اگر تازه وارد مدیریت سرور شدین، اول نصب و مدیریت سرویس Nginx رو یاد بگیرید و بعدش مباحثی مثل Virtual Host ،ReverseProxy ،SSL ،LoadBalancing و بهینهسازی Nginx.
با همین مفاهیم پایه، کمکم میتونید Nginx رو برای پروژههای واقعی و سرورهای حرفهای هم مدیریت کنید.
سوالات متداول
Nginx چیست؟
Nginx یک وبسرور قدرتمنده که برای نمایش سایتها، مدیریت درخواستهای HTTP و HTTPS، Reverse Proxy و Load Balancing استفاده میشه.
آیا نصب Nginx روی Ubuntu سخته؟
نه. در Ubuntu معمولاً با دستور apt install nginx میتونید Nginx رو نصب کنید و بعد با systemctl سرویس رو مدیریت کنید.
آیا میتوان Nginx رو روی CentOS نصب کرد؟
بله. در سیستمهایی که از DNF استفاده میکنن، میتونید با دستور dnf install nginx اون رو نصب کنید.
چطور بفهمیم Nginx درست نصب شده؟
با اجرای دستور زیر میتونید وضعیت سرویس رو بررسی کنید:
sudo systemctl status nginx
اگر وضعیت active (running) باشه، یعنی سرویس در حال اجراست. برای تست تنظیمات Nginx از دستور زیر استفاده کنید:
sudo nginx -t
این دستور قبل از Reload یا Restart کردن، صحت سینتکس فایلهای تنظیمات رو بررسی میکنه.
فایل تنظیمات اصلی Nginx کجاس؟
فایل اصلی تنظیمات معمولا در مسیر زیر قرار داره:
/etc/nginx/nginx.conf
البته تنظیمات مربوط به سایتها ممکنه در فایلها و پوشههای جداگانه قرار گرفته باشن.
آیا Nginx از Apache بهتره؟
نمیشه گفت همیشه Nginx بهتره. انتخاب بین Nginx و Apache به نوع پروژه و نیاز شما بستگی داره.
Nginx معمولا برای مدیریت تعداد زیاد درخواست و استفاده به عنوان Reverse Proxy گزینه خیلی خوبیه، اما Apache هم امکانات و انعطافپذیری خاص خودش رو داره.
چرا بعد از نصب Nginx سایت باز نمیشه؟
دلایل مختلفی میتونه داشته باشه؛ از جمله اجرا نبودن Nginx، بسته بودن پورت 80، تنظیم نبودن DNS، اشتباه بودن کانفیگ یا اشغال پورت توسط سرویس دیگه.
اولین کار اینه که وضعیت Nginx و نتیجه nginx -t رو بررسی کنید.

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