آموزش نصب Nginx در Ubuntu 24.04

آموزش نصب Nginx در Ubuntu 24.04
نصب Nginx بر روی اوبونتو 24.04 فرآیندی ساده با استفاده از APT است. این وب سرور قدرتمند برای ارائه محتوای وب با سرعت بالا و مدیریت ترافیک کاربرد دارد. در این راهنما گام های لازم برای نصب و راه اندازی اولیه این نرم افزار کلیدی را پوشش می دهیم.
Nginx (engine-x) به دلیل معماری رویدادمحور خود گزینه ای عالی برای مدیریت همزمان تعداد زیادی اتصال است. این ویژگی آن را برای سایت های پربازدید سرویس های پروکسی معکوس و توزیع بار ایده آل می سازد. اوبونتو 24.04 به عنوان یکی از پایدارترین و پرکاربردترین توزیع های لینوکس برای سرورها بستر مناسبی برای استقرار Nginx فراهم می کند. دنبال کردن این آموزش به شما کمک می کند تا این وب سرور کارآمد را به سرعت و به درستی راه اندازی کنید و از قابلیت های آن بهره مند شوید.
پیش نیازهای نصب Nginx
برای آغاز فرآیند نصب وب سرور Nginx بر روی سیستم عامل اوبونتو 24.04 اطمینان از فراهم بودن چند پیش نیاز اساسی ضروری است. در وهله اول شما به یک سیستم اوبونتو 24.04 نیاز دارید. این می تواند یک سرور فیزیکی یک ماشین مجازی یا یک کانتینر باشد. توصیه می شود از نسخه سرور اوبونتو استفاده کنید اما این راهنما برای نسخه دسکتاپ نیز قابل اجراست با این تفاوت که محیط گرافیکی ممکن است منابع بیشتری مصرف کند.
دومین پیش نیاز دسترسی به حساب کاربری با امتیازات روت یا یک کاربر با قابلیت اجرای دستورات sudo
است. نصب و پیکربندی نرم افزارهای سیستمی مانند Nginx نیازمند تغییرات در فایل ها و دایرکتوری های سیستمی است که فقط با این سطح دسترسی امکان پذیر است. اطمینان حاصل کنید که کاربر فعلی شما عضو گروه sudo
است یا رمز عبور کاربر روت را در اختیار دارید.
سومین پیش نیاز اتصال پایدار و فعال به اینترنت است. برای دانلود بسته های نرم افزاری Nginx و وابستگی های آن از مخازن اوبونتو سرور شما باید بتواند به اینترنت متصل شود. پیش از شروع نصب اتصال شبکه سرور خود را بررسی کنید تا از دسترسی به مخازن اطمینان حاصل کنید.
بروزرسانی سیستم عامل اوبونتو
قبل از نصب هر نرم افزار جدیدی بر روی سیستم عامل لینوکس به ویژه بر روی یک سرور که قرار است خدمات عمومی ارائه دهد اکیداً توصیه می شود که لیست بسته های نرم افزاری و خود سیستم عامل را بروزرسانی کنید. این کار اطمینان می دهد که از آخرین نسخه های بسته ها استفاده می کنید که معمولاً شامل رفع اشکالات امنیتی و بهبود عملکرد هستند.
برای بروزرسانی لیست بسته های موجود در مخازن تعریف شده در سیستم دستور زیر را در ترمینال اجرا کنید:
sudo apt update
این دستور به مدیر بسته APT می گوید تا لیست بسته های نرم افزاری موجود در مخازن را با نسخه های جدیدتر همگام سازی کند. پس از اتمام این فرآیند برای بروزرسانی واقعی بسته های نصب شده به آخرین نسخه های موجود دستور زیر را اجرا کنید:
sudo apt upgrade -y
دستور upgrade
بسته هایی که نسخه جدیدتری از آن ها در مخازن موجود است را دانلود و نصب می کند. گزینه -y
باعث می شود که سیستم بدون درخواست تایید از شما فرآیند نصب را ادامه دهد. انجام این مرحله پیش از نصب Nginx از سازگاری بسته ها و دسترسی به آخرین نسخه پایدار Nginx در مخازن رسمی اوبونتو اطمینان حاصل می کند.
نصب سرور وب Nginx
پس از بروزرسانی لیست بسته ها نصب نرم افزار Nginx بر روی اوبونتو 24.04 بسیار ساده است زیرا این وب سرور در مخازن پیش فرض اوبونتو موجود است. این بدان معناست که شما می توانید از مدیر بسته APT برای نصب آسان آن استفاده کنید.
برای نصب بسته اصلی Nginx دستور زیر را در ترمینال خود اجرا کنید:
sudo apt install nginx -y
این دستور بسته nginx
را به همراه هرگونه وابستگی لازم که قبلاً بر روی سیستم شما نصب نشده است دانلود و نصب می کند. مدیر بسته APT تمام فرآیندهای لازم از جمله دانلود فایل ها بررسی وابستگی ها و قرار دادن فایل های اجرایی و پیکربندی در مکان های مناسب را انجام می دهد.
پس از اتمام نصب سرویس Nginx به طور خودکار راه اندازی می شود و برای دریافت اتصالات آماده خواهد بود. این رفتار پیش فرض در نسخه های جدیدتر اوبونتو برای بسیاری از سرویس های سیستمی رایج است. شما می توانید با استفاده از دستورات مدیریت سرویس که در بخش بعدی توضیح داده می شود وضعیت سرویس Nginx را بررسی و کنترل کنید. نصب از مخازن رسمی اطمینان از دریافت نسخه ای پایدار و تست شده را فراهم می کند.
مدیریت سرویس Nginx
پس از نصب Nginx نیاز است که بتوانید سرویس آن را مدیریت کنید یعنی آن را شروع متوقف یا مجدداً راه اندازی کنید. در سیستم عامل های مبتنی بر systemd مانند اوبونتو 24.04 این کار با استفاده از ابزار systemctl
انجام می شود.
شروع به کار سرویس Nginx
اگر سرویس Nginx به هر دلیلی متوقف شده باشد می توانید با دستور زیر آن را مجدداً فعال کرده و شروع به کار کنید. این دستور دیمون Nginx را در پس زمینه سیستم عامل اجرا می کند تا آماده دریافت درخواست های وب باشد.
sudo systemctl start nginx
اجرای این دستور به systemd می گوید که واحد سرویس nginx
را فعال کرده و فرآیند مربوط به آن را راه اندازی کند. پس از اجرای موفقیت آمیز Nginx شروع به گوش دادن بر روی پورت های پیکربندی شده (معمولاً 80 برای HTTP) می کند.
توقف سرویس Nginx
در برخی مواقع ممکن است نیاز داشته باشید که سرویس Nginx را متوقف کنید به عنوان مثال برای انجام کارهای تعمیر و نگهداری یا اعمال تغییرات اساسی در پیکربندی که نیاز به توقف کامل سرویس دارد. برای متوقف کردن سرویس Nginx از دستور زیر استفاده کنید:
sudo systemctl stop nginx
این دستور به systemd سیگنال مناسب برای توقف graceful (با اتمام اتصالات فعلی) یا فوری فرآیند Nginx را ارسال می کند. پس از اجرای این دستور Nginx دیگر به درخواست های ورودی پاسخ نخواهد داد.
راه اندازی مجدد سرویس Nginx
برای اعمال بسیاری از تغییرات در فایل های پیکربندی Nginx نیاز است که سرویس مجدداً بارگذاری یا راه اندازی شود. دو دستور رایج برای این منظور وجود دارد:
sudo systemctl restart nginx
این دستور سرویس Nginx را کاملاً متوقف کرده و سپس مجدداً آن را شروع می کند. این روش برای اعمال تغییرات اساسی در پیکربندی یا در مواردی که با مشکل مواجه شده اید و نیاز به راه اندازی مجدد کامل دارید مناسب است.
sudo systemctl reload nginx
این دستور به Nginx سیگنال می دهد تا فایل های پیکربندی خود را مجدداً بارگذاری کند بدون اینکه سرویس را متوقف کند. این روش برای اعمال تغییرات جزئی مانند اضافه کردن یا حذف بلوک های سرور جدید توصیه می شود زیرا باعث اختلال در اتصالات فعال نمی شود.
فعال کردن Nginx هنگام بوت
به طور پیش فرض پس از نصب از مخازن اوبونتو Nginx به گونه ای پیکربندی می شود که هنگام راه اندازی سیستم به طور خودکار شروع به کار کند. با این حال اگر این تنظیم به هر دلیلی تغییر کرده باشد یا بخواهید از فعال بودن آن اطمینان حاصل کنید می توانید از دستور زیر استفاده کنید:
sudo systemctl enable nginx
این دستور یک لینک نمادین (symlink) ایجاد می کند که systemd در هنگام بوت سیستم از آن برای راه اندازی سرویس Nginx استفاده می کند. برای غیرفعال کردن این ویژگی (یعنی جلوگیری از شروع خودکار Nginx هنگام بوت) می توانید از دستور sudo systemctl disable nginx
استفاده کنید.
همچنین برای بررسی وضعیت فعلی سرویس Nginx (اینکه آیا در حال اجراست متوقف شده است یا با خطا مواجه شده) می توانید از دستور زیر استفاده کنید:
sudo systemctl status nginx
این دستور اطلاعات مفیدی از جمله وضعیت فعال بودن (active/inactive) زمان شروع به کار شناسه فرآیند اصلی (PID) و چند خط آخر لاگ مربوط به سرویس را نمایش می دهد.
تنظیم فایروال UFW برای Nginx
پس از نصب و راه اندازی وب سرور Nginx یکی از گام های حیاتی برای امنیت سرور تنظیم فایروال است. فایروال دسترسی به پورت های سرور را کنترل می کند و اطمینان می دهد که فقط ترافیک مجاز می تواند به سرویس های شما دسترسی پیدا کند. در اوبونتو فایروال پیش فرض Uncomplicated Firewall یا UFW نام دارد و مدیریت قوانین فایروال را ساده می سازد.
بررسی وضعیت فایروال
قبل از اعمال هرگونه تغییری در قوانین فایروال ایده خوبی است که وضعیت فعلی UFW را بررسی کنید. برای این کار دستور زیر را اجرا کنید:
sudo ufw status
اگر UFW غیرفعال باشد خروجی شبیه به Status: inactive
خواهد بود. در این صورت شما باید فایروال را فعال کنید. فعال کردن UFW بدون تعریف قوانین اولیه می تواند دسترسی SSH شما را قطع کند بنابراین توصیه می شود ابتدا قوانین لازم (مانند اجازه دادن به پورت SSH) را تعریف کرده و سپس آن را فعال کنید. با این حال برای Nginx ما فقط به باز کردن پورت های وب نیاز داریم.
اگر UFW فعال باشد خروجی لیستی از قوانین فعال را نشان می دهد. بررسی این لیست به شما کمک می کند تا بفهمید چه ترافیکی در حال حاضر مجاز یا مسدود شده است.
اجازه دادن به ترافیک HTTP و HTTPS
Nginx پس از نصب پروفایل های کاربردی خود را در UFW ثبت می کند. این پروفایل ها مجموعه قوانینی از پیش تعریف شده برای اجازه دادن به ترافیک مربوط به Nginx هستند و کار را برای شما آسان تر می کنند. برای مشاهده پروفایل های موجود Nginx دستور زیر را اجرا کنید:
sudo ufw app list
در خروجی این دستور باید پروفایل هایی شبیه به این را ببینید:
Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH
این پروفایل ها به شرح زیر هستند:
Nginx HTTP
: فقط پورت 80 (ترافیک وب غیر رمزنگاری شده) را باز می کند.Nginx HTTPS
: فقط پورت 443 (ترافیک وب رمزنگاری شده SSL/TLS) را باز می کند.Nginx Full
: هر دو پورت 80 و 443 را باز می کند.
برای اجازه دادن به ترافیک وب از طریق Nginx بسته به اینکه آیا از SSL/TLS استفاده می کنید یا خیر یکی از این پروفایل ها را انتخاب کنید. رایج ترین گزینه برای شروع اجازه دادن به هر دو پورت HTTP و HTTPS است تا وب سرور شما بتواند هم ترافیک رمزنگاری شده و هم غیر رمزنگاری شده را مدیریت کند. برای این کار دستور زیر را اجرا کنید:
sudo ufw allow Nginx Full
پس از اجرای این دستور UFW قانون لازم برای اجازه دادن به ترافیک ورودی بر روی پورت های 80 و 443 را اضافه می کند. حالا می توانید وضعیت فایروال را مجدداً بررسی کنید تا از اعمال شدن قانون اطمینان حاصل کنید:
sudo ufw status
در خروجی باید قوانینی را ببینید که ترافیک بر روی پورت های 80 و 443 را مجاز می کنند. اگر UFW قبلاً غیرفعال بوده است باید آن را فعال کنید:
sudo ufw enable
این دستور فایروال را فعال کرده و قوانین تعریف شده را اعمال می کند. پس از فعال سازی UFW در هنگام بوت سیستم نیز فعال خواهد ماند.
تست و تایید نصب Nginx
پس از اتمام مراحل نصب و تنظیم فایروال مهم است که از صحت عملکرد وب سرور Nginx اطمینان حاصل کنید. این فرآیند شامل دو بخش اصلی است: بررسی وضعیت سرویس Nginx در سیستم عامل و تست دسترسی به آن از طریق یک مرورگر وب.
اولین گام بررسی وضعیت سرویس Nginx با استفاده از ابزار systemctl
است. دستور زیر را در ترمینال سرور خود اجرا کنید:
sudo systemctl status nginx
خروجی این دستور وضعیت فعلی سرویس Nginx را نمایش می دهد. اگر نصب با موفقیت انجام شده و سرویس در حال اجرا باشد باید خطی مشابه Active: active (running)
را مشاهده کنید. این نشان می دهد که دیمون Nginx در حال اجراست و آماده دریافت درخواست هاست. اگر وضعیت چیز دیگری بود (مانند inactive یا failed) لاگ های نمایش داده شده در خروجی می توانند سرنخی برای رفع مشکل ارائه دهند.
گام دوم تست دسترسی به وب سرور از طریق یک مرورگر وب است. کامپیوتر دیگری که به شبکه سرور شما دسترسی دارد (می تواند شبکه داخلی یا اینترنت باشد بسته به اینکه سرور شما کجا قرار دارد) را باز کنید. آدرس IP عمومی سرور خود را در نوار آدرس مرورگر وارد کنید. اگر همه چیز به درستی پیکربندی شده باشد و فایروال اجازه دسترسی به پورت 80 را داده باشد باید صفحه پیش فرض Welcome to nginx! را مشاهده کنید.
مشاهده این صفحه نشان می دهد که Nginx به درستی نصب شده سرویس آن در حال اجراست و ترافیک وب (HTTP) می تواند به آن برسد. این صفحه توسط Nginx از مسیر پیش فرض سند ریشه (document root) که معمولاً /var/www/html
است ارائه می شود. اگر صفحه را مشاهده نکردید مطمئن شوید که آدرس IP سرور را درست وارد کرده اید فایروال (UFW یا هر فایروال دیگری) ترافیک بر روی پورت 80 (و 443 اگر تست HTTPS انجام می دهید) را مسدود نکرده است و سرویس Nginx واقعاً در حال اجراست.
اگر فایروال را برای اجازه دادن به ترافیک HTTPS (پورت 443) نیز پیکربندی کرده اید و گواهی SSL/TLS نصب کرده اید می توانید با وارد کردن https://your_server_ip
(یا نام دامنه) در مرورگر دسترسی HTTPS را نیز تست کنید. با این حال تست اولیه با HTTP (پورت 80) و مشاهده صفحه خوش آمدگویی Nginx برای تایید نصب اولیه کافی است.
پیکربندی اولیه Nginx
صفحه Welcome to nginx! که پس از نصب مشاهده کردید تنها یک صفحه پیش فرض است. برای ارائه محتوای وب واقعی خود نیاز به پیکربندی Nginx دارید. پیکربندی Nginx از طریق فایل های متنی انجام می شود و انعطاف پذیری بالایی را ارائه می دهد.
درک ساختار دایرکتوری Nginx
قبل از شروع پیکربندی آشنایی با ساختار دایرکتوری های اصلی Nginx ضروری است. فایل های پیکربندی Nginx عمدتاً در دایرکتوری /etc/nginx/
قرار دارند:
/etc/nginx/nginx.conf
: این فایل پیکربندی اصلی و سراسری Nginx است. شامل تنظیمات کلی مانند تعداد فرآیندهای worker تنظیمات مربوط به ماژول های اصلی و شمول (include) سایر فایل های پیکربندی است. معمولاً توصیه می شود تغییرات خاص سایت را در این فایل انجام ندهید بلکه از مکانیسم بلوک های سرور استفاده کنید./etc/nginx/sites-available/
: این دایرکتوری شامل فایل های پیکربندی بلوک های سرور (که گاهی اوقات virtual hosts نامیده می شوند) برای سایت های مختلف شماست. فایل های موجود در این دایرکتوری فعال نیستند مگر اینکه به دایرکتوریsites-enabled
لینک شده باشند./etc/nginx/sites-enabled/
: این دایرکتوری شامل لینک های نمادین (symlinks) به فایل های پیکربندی موجود درsites-available
است که Nginx باید آن ها را بارگذاری و فعال کند. این روش امکان فعال یا غیرفعال کردن آسان سایت ها را فراهم می کند./etc/nginx/snippets/
: این دایرکتوری معمولاً شامل قطعه کدهای پیکربندی قابل استفاده مجدد است که می توانند در چندین فایل پیکربندی دیگر include شوند مانند تنظیمات SSL رایج یا قوانین بازنویسی./var/www/html/
: این دایرکتوری مکان پیش فرض برای فایل های وب سایت شما است یعنی سند ریشه (document root) پیش فرض. می توانید برای سایت های خود دایرکتوری های سند ریشه جداگانه تعریف کنید.
ایجاد بلوک سرور (Server Block) جدید
بلوک سرور در Nginx معادل virtual host در Apache است و به شما امکان می دهد چندین وب سایت را بر روی یک سرور واحد میزبانی کنید. هر بلوک سرور برای یک نام دامنه خاص یا آدرس IP پیکربندی می شود. برای ایجاد یک بلوک سرور جدید:
- یک فایل پیکربندی جدید در دایرکتوری
/etc/nginx/sites-available/
ایجاد کنید. نام فایل معمولاً نام دامنه سایت شما است (مثلاًyour_domain.conf
). از یک ویرایشگر متنی مانند Nano یا Vim استفاده کنید: - محتوای بلوک سرور را در این فایل وارد کنید. یک بلوک سرور ساده برای ارائه محتوای استاتیک ممکن است به شکل زیر باشد (این فقط یک مثال مفهومی است):
sudo nano /etc/nginx/sites-available/your_domain.conf
server { listen 80; listen [::]:80; root /var/www/your_domain; index index.html index.htm index.nginx-debian.html; server_name your_domain www.your_domain; location / { try_files $uri $uri/ =404; } }
در این مثال:
listen 80;
: به Nginx می گوید بر روی پورت 80 گوش دهد.root /var/www/your_domain;
: مسیر سند ریشه برای این سایت را مشخص می کند. اطمینان حاصل کنید که این دایرکتوری وجود دارد و فایل های وب سایت شما در آن قرار دارند.index ...;
: فایل هایی که به عنوان ایندکس (صفحه اصلی) در نظر گرفته می شوند را مشخص می کند.server_name ...;
: نام دامنه(های) مرتبط با این بلوک سرور را تعریف می کند. Nginx از این برای مسیریابی درخواست ها استفاده می کند.location / { ... }
: یک بلوک برای مدیریت درخواست ها به ریشه سایت تعریف می کند.try_files
سعی می کند ابتدا فایل درخواستی را پیدا کند سپس دایرکتوری با همان نام را (و فایل ایندکس آن را) و در نهایت خطای 404 بازگرداند.
sites-available
به دایرکتوری sites-enabled
ایجاد کنید تا بلوک سرور فعال شود:sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/
sudo unlink /etc/nginx/sites-enabled/default
sudo nginx -t
اگر خروجی نشان دهد که تست موفقیت آمیز است (syntax is ok
و test is successful
) می توانید ادامه دهید.
sudo systemctl reload nginx
اکنون Nginx باید سایت جدید شما را بر روی نام دامنه مشخص شده ارائه دهد. فراموش نکنید که دایرکتوری سند ریشه (مثلاً /var/www/your_domain
) را ایجاد کرده و فایل های وب سایت خود را در آن قرار دهید و همچنین رکوردهای DNS دامنه خود را به آدرس IP سرور اشاره دهید.
سوالات متداول
Nginx چیست و چه کاربردی دارد؟
Nginx یک وب سرور با کارایی بالا است که علاوه بر ارائه صفحات وب به عنوان پروکسی معکوس توزیع کننده بار و کش HTTP نیز کاربرد دارد.
چگونه نسخه Nginx نصب شده را بررسی کنیم؟
برای مشاهده نسخه Nginx نصب شده می توانید از دستور
nginx -v
در ترمینال استفاده کنید.
فایل اصلی پیکربندی Nginx در کجا قرار دارد؟
فایل اصلی پیکربندی جهانی Nginx در مسیر
/etc/nginx/nginx.conf
قرار دارد و تنظیمات کلی سرور را شامل می شود.
برای حذف Nginx چه دستوری لازم است؟
برای حذف بسته Nginx از سیستم اوبونتو از دستور
sudo apt remove nginx
استفاده کنید. برای حذف کامل فایل های پیکربندی نیز می توانید
purge
را به جای
remove
به کار ببرید.
تفاوت Nginx با Apache چیست؟
Nginx از معماری رویدادمحور برای مدیریت اتصالات استفاده می کند که آن را برای ترافیک بالا و محتوای ایستا کارآمدتر می سازد. Apache از مدل پردازشی یا نخ محور استفاده کرده و ماژول های بیشتری دارد.
Nginx به طور پیش فرض از کدام پورت ها استفاده می کند؟
Nginx به طور پیش فرض برای ترافیک HTTP از پورت 80 و برای ترافیک HTTPS (در صورت پیکربندی SSL/TLS) از پورت 443 استفاده می کند.
خطا: هیچ نوشته مرتبطی پیدا نکرد.