آموزش ها-هاست نگار

آموزش نصب و کانفیگ Nginx بر روی Ubuntu

 

اگر بخواهید به طور خلاصه بدانید NGINX چیست، Nginx یک نرم افزار منبع‌باز (Open source) هست و به عنوان سرویس‌دهنده وب، پراکسی معکوس (reverse proxying)، سیستم کش (caching)، سیستم load balancing، و شبکه رسانه‌ای (media streaming) و … استفاده می‌شود. همچنین برای این که بدانید nginx چیست باید در نظر بگیرید که Nginx به عنوان یک وب‌سرور با ارائه حداکثر کارایی (performance) و پایداری (stability) طراحی شده است.
علاوه بر قابلیت HTTP سرور، NGINX می‌تواند به عنوان یک پروکسی سرور برای سرویس ایمیل (IMAP، POP3 و SMTP ) و نیز یک پروکسی معکوس و یا سیستم لودبالانس برای سرورهای HTTP، TCP و UDP عمل کند.
 
آنچه یاد خواهید گرفت
  • نحوه راه اندازی Nginx
  • برخی از تنظیمات اولیه Nginx
آنچه شما نیاز خواهید داشت
  • رایانه ای که سرور اوبونتو 20.04 LTS را اجرا می کند
  • برخی از دانش اولیه استفاده از خط فرمان
  • یک اکانت کاربر معمولی و غیر روت با امتیازات sudo
مرحله 1 - نصب Nginx
از آنجایی که Nginx در مخازن پیش‌فرض اوبونتو موجود است، می‌توان آن را از این مخازن با استفاده از پکیج apt نصب کرد. پس ابتدا این پکیج را آپدیت و سپس Nginx را نصب میکنیم:
sudo apt update
sudo apt install nginx
پس از پذیرش ، apt وب سرور Nginx و هر گونه وابستگی مورد نیاز را روی سرور شما نصب خواهد کرد.
 
مرحله 2 - تنظیم فایروال
قبل از تست Nginx، فایروال باید تنظیم شود تا امکان دسترسی به سرویس را فراهم کند. پس از نصب NGNIX باید فایروال را برای جلوگیری از اختلال در عملکرد وب سرور تنظیم کنید. وب سرور NGNIX به طور پیش فرض از پورت 80 HTTP و 443 HTTPS استفاده می کند که در صورت فعال بودن فایروال نیاز است از باز بودن این پورت در فایروال اطمینان حاصل کنید به همین منظور از دستور زیر استفاده کرده تا دسترسی کامل برای سرویس Ngnix روی فایروال تنظیم شود.
  • Nginx Full: این نمایه هم پورت 80 (ترافیک وب عادی و رمزگذاری نشده) و هم پورت 443 (ترافیک رمزگذاری شده TLS/SSL) را باز می کند.
  • Nginx HTTP: این نمایه فقط پورت 80 را باز می کند (ترافیک وب عادی و رمزگذاری نشده)
  • Nginx HTTPS: این نمایه فقط پورت 443 را باز می کند (ترافیک رمزگذاری شده TLS/SSL)
'sudo ufw allow 'Nginx Full
تغییر را تأیید کنید با وارد کردن :
sudo ufw status
خروجی باید این چنین باشد:
Output
Status: active
To           Action         From
----                    -----                       --
   OpenSSH       ALLOW         Anywhere
  Nginx Full    ALLOW         Anywhere
بررسی وب سرور
در پایان مراحل نصب، Ubuntu 20.04 این وب سرور را راه اندازی می کند. Nginx باید از قبل راه اندازی شده باشد. با تایپ کردن کد زیر میتوانید مطمئن شویم:
systemctl status nginx
در خروجی این کد باید جلوی قسمت Active: active(running) را نوشته باشد، در اینصورت شما با موفقیت Nginx را روی سرور خود نصب کرده اید. با این حال، بهترین راه برای آزمایش این است که واقعاً یک صفحه از Nginx درخواست کنید.
می توانیم آدرس IP سرور خود را تایپ کنید http://YOUR_IP/، و صفحه خوش آمدگویی پیش فرض Ubuntu 20.04 Nginx را مطابق شکل زیر مشاهده خواهید کرد:
 
 
مرحله 4 - مدیریت عملکرد 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
Nginx در اوبونتو 20.04 دارای یک بلوک سرور است که به طور پیش فرض فعال شده است که برای ارائه اسناد خارج از یک فهرست در /var/www/html پیکربندی شده است. در حالی که این برای یک سایت خوب کار می کند، اگر چندین سایت را میزبانی کنید، می تواند سخت شود. به جای تغییر /var/www/html، بیایید یک ساختار دایرکتوری در /var/www برای سایت your_domain خود ایجاد کنیم، و در صورت عدم مطابقت با درخواست مشتری، /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 یا ویرایشگر مورد علاقه خود ایجاد کنید:
sudo nano /var/www/your_domain/html/index.html
نمونه HTML زیر را اضافه کنید:
<html>
<head>    
<title>Welcome to your_domain!</title>         
</head>    
  <body>    
<h1>Success! The your_domain server block is working!</h1>        
</body>    
</html>
 
 
با فشار دادن Ctrl+X برای خروج، فایل را ذخیره کرده و ببندید، سپس وقتی از شما خواسته شد که ذخیره کنید، Y و سپس Enter را فشار دهید.
 
برای اینکه Nginx بتواند این محتوا را ارائه دهد، لازم است یک بلوک سرور با دستورالعمل های صحیح ایجاد کنید. به جای اینکه مستقیماً فایل پیکربندی پیش فرض را تغییر دهیم، بیایید یک فایل جدید در /etc/nginx/sites-available/your_domain ایجاد کنیم:
sudo nano /etc/nginx/sites-available/your_domain
در بلوک پیکربندی زیر، که شبیه به پیش فرض است، اما دایرکتوری و نام دامنه به روز شده است، قرار دهید:
 } 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 را به نام دامنه خود به روز کرده ایم.
 
سپس، فایل را با ایجاد لینکی از آن به دایرکتوری فعال شده توسط سایت‌ها، که Nginx هنگام راه‌اندازی از آن می‌خواند، فعال کنیم:
/sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled
 
توجه: Nginx از یک روش معمول به نام سیمبول لینک برای ردیابی اینکه کدام یک از بلاک های سرور شما فعال هستند استفاده می کند.
اکنون دو بلاک سرور برای پاسخ به درخواست‌ها بر اساس دستورالعمل‌های listen و server_name فعال و پیکربندی شده‌اند (شما می‌توانید در مورد نحوه پردازش Nginx این دستورالعمل‌ها را در اینجا بیشتر بخوانید):
your_domain: به درخواست های your_domain و www.your_domain پاسخ می دهد.
پیش فرض: به هر درخواستی در پورت 80 که با دو بلاک دیگر مطابقت نداشته باشد پاسخ می دهد.
برای جلوگیری از مشکل احتمالی حافظه هش که ممکن است در اثر افزودن نام سرور اضافی ایجاد شود، لازم است یک مقدار واحد را در فایل /etc/nginx/nginx.conf تنظیم کنید. فایل را باز کنید:
sudo nano /etc/nginx/nginx.conf
دستور server_names_hash_bucket_size را پیدا کنید و نماد # را بردارید. اگر از nano استفاده می کنید، می توانید با فشردن CTRL و w به سرعت کلمات موجود در فایل را جستجو کنید.
توجه: کامنت کردن کد ها با اضافه کردن # ابتدای کد راه دیگری برای غیرفعال کردن آنها بدون نیاز به حذف واقعی آنها است.
...
} http
 ...  
;server_names_hash_bucket_size 64  
...  
 {
...
پس از اتمام کار فایل را ذخیره کرده و ببندید.
در مرحله بعد، آزمایش کنید تا مطمئن شوید در هیچ یک از فایل های Nginx شما خطای سینتکسی یا نشانه ای وجود ندارد:
sudo nginx -t
اگر مشکلی وجود ندارد، Nginx را مجددا راه اندازی کنید تا تغییرات شما فعال شود:
sudo systemctl restart nginx
Nginx اکنون باید بر روی دامنه شما فعال باشد. می توانید این را با رفتن به http://your_domain آزمایش کنید، و چیزی مشابه دریافت کنید:
 
ساختار فایل های کانفیگ Nginx
  • همه فایل های پیکربندی Nginx در دایرکتوری etc/nginx/ قرار دارند.
  • فایل اصلی پیکربندی Nginx در /etc/nginx/nginx.conf می باشد.
  • پیشنهاد میشود برای مدیریت بهتر و سادگی بیشتر برای هر دامنه یا سرویس که قصد اضافه کردن آن به سرور را دارید، یک فایل کانفیگ مجزا ایجاد کنید.
  • سرور بلاک های Nginx داخل دایرکتوری /etc/nginx/sites-available نگهداری می شوند. Nginx از فایل های پیکربندی موجود در این دایرکتوری استفاده نمی کند مگر اینکه به دایرکتوری فعال شده سایت ها پیوند داده شده باشند. مگر اینکه سیمبول لینک بین این فایل و دایرکتوری /etc/nginx/sites-enabled ایجاد شده باشد. سرور بلاک‌های فعال Nginx در /etc/nginx/sites-available/ ذخیره میشوند.
  • /etc/nginx/snippets: این دایرکتوری شامل قطعات پیکربندی است که می تواند در جای دیگری از پیکربندی Nginx گنجانده شود.
گزارش سرور
  • /var/log/nginx/access.log: هر درخواست به سرور وب شما در این فایل گزارش ثبت می‌شود، مگر اینکه Nginx به گونه‌ای دیگر پیکربندی شده باشد.
  • /var/log/nginx/error.log: هر گونه خطای Nginx در این گزارش ثبت می شود.
در این مقاله نحوه نصب و کانفیگ وب سرور Nginx را توضیح دادیم، امیدواریم این مقاله آموزشی برای شما مفید بوده باشد. برای دیدن باقی آموزش ها میتوانید وارد منوی پشتیبانی بخش آموزش ها شوید، در صورتی که درباره این آموزش به مشکل یا سوالی برخورد کردید، میتوانید آن را در بخش دیدگاه بیان کنید.

نوشتن دیدگاه


تصویر امنیتی
تصویر امنیتی جدید

خرید هاست

 

آموزش های مرتبط