آموزش نصب Nginx در Ubuntu: راهنمای کامل
Nginx یک سرور وب و پروکسی معکوس (reverse proxy) قدرتمند و پرکاربرد است که به دلیل کارایی بالا، قابلیت اطمینان و پشتیبانی از تعداد زیادی اتصال همزمان بهطور گستردهای در جهان فناوری اطلاعات استفاده میشود. این سرور وب بهعنوان جایگزینی برای Apache معرفی شد و بهویژه در برنامههایی که نیاز به مدیریت حجم بالای ترافیک دارند، محبوبیت پیدا کرده است. در این مقاله، به شما نشان خواهیم داد که چگونه Nginx را بر روی یک سرور Ubuntu نصب کنید(نصب Nginx) و آن را برای استفاده آماده نمایید.
پیشنیازها:
قبل از شروع فرآیند نصب Nginx، باید از چند پیشنیاز مطمئن شوید:
- دسترسی به سرور Ubuntu: شما باید به یک سرور Ubuntu دسترسی داشته باشید. این سرور میتواند یک سرور اختصاصی، سرور مجازی یا حتی یک ماشین مجازی روی رایانه شخصی شما باشد.
- دسترسی ریشه (Root) یا کاربری با مجوزهای sudo: شما باید دسترسی به یک حساب کاربری با مجوزهای مدیریتی (sudo) داشته باشید.
- اتصال به اینترنت: برای نصب و بهروزرسانی بستههای نرمافزاری، سرور باید به اینترنت متصل باشد.
بهروزرسانی و آمادهسازی سیستم
قبل از نصب Nginx، ابتدا باید سیستم Ubuntu خود را بهروز کنید تا از نصب آخرین نسخههای بستههای نرمافزاری مطمئن شوید. برای انجام این کار، ابتدا وارد سیستم شده و سپس دستور زیر را اجرا کنید:
sudo apt update sudo apt upgrade
این دستورات ابتدا فهرست بستههای موجود را بهروزرسانی میکند و سپس هر بسته نرمافزاری که نیاز به بهروزرسانی دارد را ارتقاء میدهد. پس از اجرای این دستورات، سیستم شما بهروز خواهد بود و آماده نصب Nginx است.
نصب Nginx
برای نصب Nginx، باید از مدیر بسته apt استفاده کنید. دستور زیر را برای نصب Nginx وارد کنید:
sudo apt install nginx
پس از وارد کردن این دستور، مدیر بسته apt بهطور خودکار تمام وابستگیهای مورد نیاز را شناسایی کرده و آنها را همراه با Nginx نصب خواهد کرد. هنگامی که فرآیند نصب کامل شد، Nginx بهطور خودکار بهعنوان یک سرویس فعال میشود.
بررسی وضعیت Nginx
برای اطمینان از این که Nginx بهدرستی نصب شده و در حال اجرا است، میتوانید از دستور زیر برای بررسی وضعیت سرویس Nginx استفاده کنید:
sudo systemctl status nginx
این دستور وضعیت فعلی سرویس Nginx را نمایش میدهد. اگر 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 Tue 2024-09-21 10:34:00 UTC; 3min 15s ago
این پیام نشان میدهد که Nginx در حال اجرا است و سرویس آن بهدرستی فعال شده است.
پیکربندی فایروال
اگر سیستم شما از فایروال UFW (Uncomplicated Firewall) استفاده میکند، باید اطمینان حاصل کنید که ترافیک وب به Nginx مجاز است. UFW یک ابزار مدیریت فایروال است که به شما اجازه میدهد قوانین فایروال را به راحتی پیکربندی و مدیریت کنید.
برای مجاز کردن ترافیک HTTP و HTTPS به Nginx، دستورهای زیر را اجرا کنید:
sudo ufw allow 'Nginx HTTP' sudo ufw allow 'Nginx HTTPS'
با اجرای این دستورات، پورتهای 80 (HTTP) و 443 (HTTPS) باز میشوند و ترافیک وب به سرور شما هدایت میشود. برای اطمینان از فعال بودن این قوانین، میتوانید وضعیت UFW را با استفاده از دستور زیر بررسی کنید:
sudo ufw status
این دستور باید نشان دهد که قوانین HTTP و HTTPS برای Nginx فعال شدهاند.
بررسی نصب Nginx با استفاده از مرورگر
برای اطمینان از این که Nginx بهدرستی کار میکند، میتوانید آدرس IP سرور خود را در نوار آدرس مرورگر وب وارد کنید. اگر Nginx بهدرستی نصب و پیکربندی شده باشد، باید صفحه خوشآمدگویی پیشفرض Nginx را مشاهده کنید که پیامی مانند زیر دارد:
Welcome to nginx!
این صفحه نشان میدهد که Nginx بهدرستی در حال اجرا است و آماده سرویسدهی به درخواستهای وب است.
مدیریت سرویس Nginx
یکی از مهمترین وظایف مدیریت یک سرور وب، مدیریت سرویس Nginx است. در این بخش، به برخی از دستورات اصلی که برای مدیریت سرویس Nginx استفاده میشود، میپردازیم.
شروع سرویس Nginx:
اگر به هر دلیلی نیاز دارید Nginx را به صورت دستی راهاندازی کنید، میتوانید از دستور زیر استفاده کنید:
sudo systemctl start nginx
توقف سرویس Nginx:
برای متوقف کردن Nginx، از دستور زیر استفاده کنید:
sudo systemctl stop nginx
راهاندازی مجدد Nginx:
گاهی اوقات نیاز است که تغییرات پیکربندی را اعمال کنید و سپس سرویس Nginx را مجدداً راهاندازی کنید تا این تغییرات اعمال شوند:
sudo systemctl restart nginx
بارگذاری مجدد پیکربندی Nginx:
اگر تغییرات کوچکی در فایلهای پیکربندی Nginx انجام دادهاید و نمیخواهید سرویس را بهطور کامل راهاندازی مجدد کنید، میتوانید از دستور زیر برای بارگذاری مجدد پیکربندی بدون قطع سرویس استفاده کنید:
sudo systemctl reload nginx
پیکربندی پایه Nginx
Nginx بهطور پیشفرض پیکربندی شده است تا به درخواستهای HTTP پاسخ دهد. با این حال، شما ممکن است بخواهید پیکربندیهای بیشتری را برای تطبیق با نیازهای خاص خود انجام دهید.
فایلهای پیکربندی Nginx:
فایلهای پیکربندی Nginx در دایرکتوری /etc/nginx/
قرار دارند. فایل اصلی پیکربندی Nginx، nginx.conf
است که در مسیر /etc/nginx/nginx.conf
قرار دارد. این فایل شامل تنظیمات اصلی سرور است و شما میتوانید آن را برای پیکربندیهای پیشرفتهتر و تنظیمات سفارشی ویرایش کنید.
پیکربندی بلاکهای سرور:
یکی از مهمترین مفاهیم در پیکربندی Nginx، بلاکهای سرور (server blocks) است. هر بلاک سرور بهعنوان یک وبسایت یا دامنه جداگانه عمل میکند. به عبارت دیگر، اگر شما میخواهید چندین وبسایت را روی یک سرور میزبانی کنید، باید برای هر وبسایت یک بلاک سرور جداگانه تعریف کنید.
فایلهای پیکربندی بلاکهای سرور معمولاً در دایرکتوری /etc/nginx/sites-available/
قرار دارند. برای فعال کردن یک بلاک سرور، باید یک لینک به این فایل از دایرکتوری /etc/nginx/sites-enabled/
ایجاد کنید.
بهعنوان مثال، برای ایجاد یک بلاک سرور جدید، میتوانید یک فایل پیکربندی جدید به نام example.com
در دایرکتوری sites-available
ایجاد کنید:
sudo nano /etc/nginx/sites-available/example.com
در این فایل، میتوانید تنظیمات مربوط به دامنه example.com
را وارد کنید، از جمله مسیرهای دسترسی به فایلهای وبسایت و تنظیمات مربوط به SSL.
پس از ایجاد فایل، باید آن را به دایرکتوری sites-enabled
لینک کنید:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
در نهایت، برای اعمال تغییرات، باید پیکربندی Nginx را بارگذاری مجدد کنید:
sudo systemctl reload nginx
پیکربندی SSL با Nginx
یکی از موارد مهم در امنیت وبسایتها، استفاده از SSL برای رمزنگاری ارتباطات است. در این بخش، نحوه پیکربندی SSL برای وبسایتهای میزبانیشده روی Nginx را توضیح خواهیم داد.
دریافت گواهینامه SSL با استفاده از Certbot:
یکی از سادهترین راهها برای دریافت گواهینامه SSL رایگان، استفاده از Certbot است. Certbot ابزاری است که بهطور خودکار گواهینامههای SSL را از Let’s Encrypt دریافت و آنها را بر روی Nginx پیکربندی میکند. برای نصب Certbot و افزونه Nginx آن، میتوانید از دستورات زیر استفاده کنید:
sudo apt install certbot python3-certbot-nginx
پس از نصب، میتوانید با اجرای دستور زیر گواهینامه SSL را برای دامنه خود دریافت کنید:
sudo certbot --nginx -d example.com -d www.example.com
این دستور Certbot را راهاندازی کرده و بهطور خودکار گواهینامه SSL را برای دامنههای مشخص شده دریافت و پیکربندی میکند. Certbot همچنین پیکربندیهای لازم برای استفاده از SSL را در فایلهای پیکربندی Nginx اعمال میکند.
تایید تمدید خودکار گواهینامه SSL:
یکی از ویژگیهای مفید Certbot، قابلیت تمدید خودکار گواهینامههای SSL است. برای اطمینان از این که گواهینامههای شما بهطور خودکار تمدید میشوند، میتوانید دستور زیر را اجرا کنید:
sudo certbot renew --dry-run
این دستور یک تست شبیهسازی از فرآیند تمدید را انجام میدهد تا اطمینان حاصل شود که همه چیز بهدرستی پیکربندی شده است. اگر همه چیز درست باشد، گواهینامهها بهطور خودکار هر چند ماه یکبار تمدید میشوند.
تنظیمات پیشرفته Nginx
پس از نصب و پیکربندی پایه Nginx، ممکن است نیاز داشته باشید تنظیمات پیشرفتهتری را برای بهبود کارایی و امنیت وبسایت خود اعمال کنید. در ادامه به برخی از این تنظیمات اشاره میکنیم.
فعالسازی Gzip Compression:
فشردهسازی محتوا یکی از راههای موثر برای افزایش سرعت بارگذاری صفحات وب است. Nginx به شما این امکان را میدهد تا با فعالسازی Gzip، حجم دادههای ارسالشده به مرورگر کاربران را کاهش دهید. برای فعالسازی Gzip، کافی است خطوط زیر را در فایل پیکربندی Nginx (بهعنوان مثال در nginx.conf
) اضافه کنید:
gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
پیکربندی کشینگ (Caching):
کشینگ میتواند عملکرد وبسایت شما را بهبود بخشد و زمان بارگذاری صفحات را کاهش دهد. Nginx قابلیتهای پیشرفتهای برای کشینگ محتوای استاتیک و دینامیک دارد. برای مثال، میتوانید یک کشینگ ساده برای محتواهای استاتیک مانند تصاویر، CSS و JavaScript تنظیم کنید:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 7d; log_not_found off; }
این تنظیمات محتوای استاتیک را به مدت 7 روز در کش نگه میدارد.
پیکربندی Load Balancing:
Nginx میتواند بهعنوان یک لود بالانسر (Load Balancer) برای توزیع ترافیک بین چندین سرور وب عمل کند. این قابلیت برای وبسایتهایی که با حجم بالای ترافیک روبرو هستند، بسیار مفید است. برای پیکربندی لود بالانسینگ، میتوانید از بلاکهای upstream
و server
استفاده کنید:
upstream backend { server backend1.example.com; server backend2.example.com; } server { location / { proxy_pass http://backend; } }
در این مثال، ترافیک ورودی به backend
بین دو سرور backend1
و backend2
توزیع میشود.
مانیتورینگ و نگهداری Nginx
یکی از بخشهای مهم در مدیریت یک سرور وب، مانیتورینگ و نگهداری منظم آن است. این فرآیند شامل نظارت بر عملکرد Nginx و اطمینان از عدم وجود مشکلات عملکردی یا امنیتی است.
استفاده از ابزارهای مانیتورینگ:
ابزارهای متعددی برای مانیتورینگ Nginx وجود دارد که میتوانند به شما در شناسایی و رفع مشکلات کمک کنند. برخی از این ابزارها عبارتند از:
- Grafana و Prometheus: این دو ابزار به شما اجازه میدهند که متریکهای مختلف Nginx را در یک داشبورد گرافیکی مشاهده و تحلیل کنید.
- New Relic: این ابزار نیز یکی از محبوبترین ابزارهای مانیتورینگ است که عملکرد سرور و برنامههای وب را در زمان واقعی نظارت میکند.
بررسی لاگهای Nginx:
Nginx بهطور خودکار لاگهایی از درخواستهای ورودی و خطاها ثبت میکند. این لاگها در مسیر /var/log/nginx/
ذخیره میشوند. لاگهای دسترسی (access logs) و خطاها (error logs) میتوانند به شما در شناسایی مشکلات احتمالی و تحلیل رفتار کاربران کمک کنند. برای مشاهده این لاگها، میتوانید از دستوراتی مانند زیر استفاده کنید:
sudo tail -f /var/log/nginx/access.log sudo tail -f /var/log/nginx/error.log
بروزرسانی منظم Nginx:
مانند هر نرمافزار دیگری، بروزرسانی منظم Nginx به شما کمک میکند تا از بهبودهای امنیتی و عملکردی جدید بهرهمند شوید. برای بروزرسانی Nginx به آخرین نسخه، میتوانید از دستورات زیر استفاده کنید:
sudo apt update sudo apt upgrade nginx
این دستورات بستههای موجود را بروزرسانی میکنند و آخرین نسخه Nginx را نصب میکنند.
نتیجهگیری
آموزش نصب Nginx در Ubuntu یک فرآیند نسبتا ساده است که با پیروی از مراحل ذکر شده میتوان به راحتی آن را انجام داد. Nginx با ویژگیهای قدرتمند و انعطافپذیری بالا، به یکی از محبوبترین سرورهای وب و پروکسیهای معکوس در جهان تبدیل شده است. با پیکربندی صحیح و مدیریت مناسب، Nginx میتواند به شما در ارائه یک تجربه وب سریع، امن و قابل اعتماد کمک کند.
این راهنمای کامل شما را از نصب اولیه تا پیکربندیهای پیشرفته Nginx هدایت میکند. با این حال، نیازها و شرایط خاص هر سرور میتواند متفاوت باشد، بنابراین همیشه توصیه میشود که مستندات رسمی Nginx و منابع مربوط به Ubuntu را مطالعه کنید و تنظیمات را بر اساس نیازهای خاص خود انجام دهید.
آموزش نصب Nginx در Ubuntu
1. چگونه میتوانم نسخه نصبشده Nginx را بررسی کنم؟
برای بررسی نسخه نصبشده Nginx بر روی سیستم خود، میتوانید دستور زیر را در ترمینال اجرا کنید:
nginx -v
2. چگونه میتوانم یک وبسایت دیگر را روی Nginx میزبانی کنم؟
برای میزبانی یک وبسایت جدید روی Nginx، باید یک فایل پیکربندی جدید در دایرکتوری /etc/nginx/sites-available/
ایجاد کرده و سپس آن را به دایرکتوری sites-enabled
لینک کنید. پس از آن، پیکربندی Nginx را با استفاده از دستور sudo systemctl reload nginx
بارگذاری مجدد کنید.
3. چرا بعد از اعمال تغییرات در فایلهای پیکربندی، Nginx به درستی کار نمیکند؟
ممکن است خطاهایی در پیکربندی Nginx وجود داشته باشد. قبل از بارگذاری مجدد Nginx، میتوانید با استفاده از دستور زیر صحت پیکربندی را بررسی کنید:
sudo nginx -t
این دستور هر گونه خطا در پیکربندی را نمایش میدهد.
4. چگونه میتوانم Nginx را به عنوان یک پروکسی معکوس پیکربندی کنم؟
برای پیکربندی Nginx به عنوان یک پروکسی معکوس، باید از دستور proxy_pass
در فایل پیکربندی Nginx استفاده کنید. برای مثال، در فایل پیکربندی سرور، میتوانید از دستور زیر استفاده کنید:
location / {
proxy_pass http://backend_server;
}
5. چگونه میتوانم Nginx را از سرورم حذف کنم؟
برای حذف Nginx از سیستم Ubuntu خود، میتوانید از دستور زیر استفاده کنید:
sudo apt remove nginx
اگر میخواهید تمام فایلهای پیکربندی و وابستگیها را نیز حذف کنید، از دستور زیر استفاده کنید:
sudo apt purge nginx
6. چگونه میتوانم Nginx را برای بارگذاری محتوا از یک دایرکتوری خاص پیکربندی کنم؟
برای بارگذاری محتوا از یک دایرکتوری خاص، میتوانید مسیر دایرکتوری را در بلاک سرور Nginx تنظیم کنید. به عنوان مثال:
server {
listen 80;
server_name example.com;
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
این پیکربندی باعث میشود که Nginx محتوای وبسایت را از دایرکتوری /var/www/example.com
بارگذاری کند.
docs.nginx – فاماسرور