تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

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


۲۰ اردیبهشت ۱۴۰۴

Nginx یکی از وب سرورهای محبوب و قدرتمند است که در میزبانی وب‌سایت‌های پربازدید و برنامه‌های تحت وب از آن استفاده می‌شود و بسیار کارآمد است. این ابزار سبک و سریع، نه تنها به عنوان یک وب سرور، بلکه به عنوان یک پروکسی معکوس (Reverse Proxy) عمل می‌کند و توانایی مدیریت حجم بالای ترافیک را با عملکردی بی‌نظیری دارد.

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

با سرور ابونتو لیارا، بدون دردسر سرور خود را تنها با چند کلیک مدیریت کنید.
✅ منابع کاملاً اختصاصی و پایدار✅ سرعت بالا و ترافیک نامحدود✅ امنیت پیشرفته و پشتیبانی 24/7
خرید و راه‌اندازی سرور اوبونتو ساعتی لیارا

آنچه در ادامه خواهید خواند:

  • پیش نیاز های لازم برای شروع پیکربندی
  • نصب اولیه Nginx بر روی اوبونتو (شروع راه‌ اندازی سرور)
  • تنظیم دسترسی فایروال برای اجرای Nginx
  • بررسی وضعیت وب سرور Nginx در اوبونتو
  • مدیریت سرویس Nginx در اوبونتو
  • راه‌ اندازی Server Block برای میزبانی چند دامنه با Nginx (پیشنهاد لیارا)
  • آشنایی با فایل‌ ها و دایرکتوری‌ های مهم Nginx
  • بهینه سازی عملکرد برای سرور های پر ترافیک
  • تنظیم Nginx به عنوان پروکسی معکوس برای اپلیکیشن‌ ها
  • عیب‌ یابی خطا های رایج Nginx
  • سوالات متداول
  • جمع بندی

پیش نیاز های لازم برای شروع پیکربندی

پیش از آنکه شروع کنید، لازم است که بر روی سرور خود یک کاربر معمولی غیر از کاربر روت (root) با قابلیت دسترسی‌های sudo را ساخته باشید. همچنین بهتر است که پیش از آنکه به مراحل پایانی برسید، یک دامنه ثبت شده را در اختیار داشته باشید. بعد از آن مراحل زیر را به ترتیب انجام دهید.

نصب اولیه Nginx بر روی اوبونتو (شروع راه‌اندازی سرور)

Nginx همیشه در مخازن (Repository) پیش فرض اوبونتو موجود است، در مرحله اول می‌توانید آن را با استفاده از سیستم مدیریت‌های پکیج APT نصب کنید.

از آن جایی که از apt برای اولین بار در این پروژه استفاده می‌کنید، بهتر است که ابتدا فهرست پکیج‌های محلی‌تان را به روز رسانی کنید تا جدیدترین نسخه‌ها برای شما در دسترس باشد. بعد از آن می‌توانید Nginx را نصب کنید. بعد از آنکه فرآیند شما تایید شد، apt نصب Nginx و تمام وابستگی‌های مورد نیاز بر روی سرور را شروع می‌کند.

sudo apt update
sudo apt install nginx
آموزش نصب و راه‌اندازی فایروال UFW در سرور مجازی اوبونتو به زبان ساده
نصب و راه‌اندازی فایروال UFW در سرور مجازی اوبونتو

تنظیم دسترسی فایروال برای اجرای Nginx

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

برای اینکه بتوانید فهرست پیکربندی‌هایی که UFW می‌تواند با آن‌ها کار کند را بررسی کنید از دستور زیر استفاده کنید.

sudo ufw app list

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

Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

همان طور که در خروجی مشاهده کردید، سه پروفایل برای Nginx در این قطعه کد وجود دارد.

  • Nginx Full: این پروفایل هر دو پورت 80 (ترافیک معمولی و رمزنگاری‌نشده) و 443 (ترافیک رمزنگاری‌شده با TLS/SSL) را باز می‌کند.
  • Nginx HTTP: این پروفایل فقط پورت 80 را باز می‌کند.
  • Nginx HTTPS: این پروفایل فقط پورت 443 را باز می‌کند.

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

sudo ufw allow 'Nginx HTTP'

برای اینکه اطمینان حاصل کنید که تغییراتی که انجام داده‌اید اعمال شده‌اند، می‌توانید فایروال خود را بررسی کنید.

sudo ufw status

خروجی دستور به شما نشان می‌دهد که چه مقدار و چه نوع ترافیکی برای شما مجاز شده است.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)
تنظیم دسترسی فایروال برای اجرای Nginx

چطور یک برنامه‌ی Node.js را برای محیط تولید روی سرور مجازی اوبونتو Ubuntu راه‌اندازی کنیم؟
Node.js برای محیط تولید روی سرور مجازی اوبونتو Ubuntu

بررسی وضعیت وب سرور Nginx در اوبونتو

بعد از آن که فرآیند نصب را در مرحله قبل تمام کردید، نوبت به مرحله سوم می‌رسد که اوبونتو به صورت خودکار Nginx را اجرا کند. بنابراین وب سرور شما باید در این قسمت فعال و در حال اجرا باشد. برای این که مطمئن شوید که سرورتان به صورت صحیح اجرا می‌شود، با استفاده از systemd وضعیت آن را بررسی کنید.

systemctl status 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 Fri 2020-04-20 16:08:19 UTC; 3 days ago
     Docs: man:nginx(8)
 Main PID: 2369 (nginx)
    Tasks: 2 (limit: 1153)
   Memory: 3.5M
   CGroup: /system.slice/nginx.service
           ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─2380 nginx: worker process

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

curl -4 icanhazip.com

بعد از آنکه، IP مورد نظرتان را دریافت کردید، آن را در مرورگر وارد کنید.

http://your_server_ip

اما اگر صفحه پیش فرض، Nginx را مشاهده کردید، به این معنی است که وب سرور شما به درستی اجرا شده است و آماده مدیریت است.

مدیریت سرویس Nginx در اوبونتو

در این مرحله وب سرور شما فعال شده است. پس با چند دستور پایه آن آشنا شوید، تا در بتوانید از آن‌ها به درستی استفاده کنید.

برای متوقف کردن سرویس:

sudo systemctl stop nginx

برای شروع مجدد سرویس:

sudo systemctl start nginx

برای توقف و شروع مجدد سرویس:

sudo systemctl restart nginx

در شرایطی که تنها تنظیمات پیکربندی تغییر کرده بودند و به اجرای مجدد آن نیازی نخواهد بود از دستور زیر برای اعمال آن‌ها بدون قطعی در اتصال استفاده کنید.

sudo systemctl reload nginx

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

sudo systemctl enable nginx

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

آموزش استفاده از psad برای شناسایی و جلوگیری از حملات سایبری در اوبونتو
psad برای جلوگیری از حملات سایبری در اوبونتو

راه‌ اندازی Server Block برای میزبانی چند دامنه با Nginx (پیشنهاد لیارا)

در وب سرور Nginx، می‌توانید از Server Block (مشابه Virtual Host در Apache) برای تعریف تنظیمات مستقل و میزبانی چند دامنه روی یک سرور استفاده کنید. در مرحله پیش رو قصد داریم که دامنه‌ای را با نام your_domain تنظیم کنیم. اما به یاد داشته باشید که شما در پروژه واقعی‌تان باید این نام را با نام دامنه واقعی خودتان جایگزین کنید your_domain صرفا جنبه اموزش در این مقاله از لیارا را دارد.

در حالت پیش فرض، در Nginx اوبونتو، یک Server Block فعال است که فایل ها را از مسیر /var/www/html ارائه می‌دهد. این روش تنها برای یک سایت کافی است اما اگر چند سایت بر روی سرور خود در اختیار داشته باشید، احتمالا مدیریت آن برای شما کمی دشوارتر خواهد کرد. پس برای جلوگیری از این اشتباه می‌توانید به جای تغییر در مسیر پیش فرض، یک ساختار دایرکتوری جدیدی را در مسیر /var/www برای دامنه‌ی خود بسازید و مسیر پیش فرض را برای مواقعی که درخواست با هیچ سایتی مطابقت های لازم را ندارد، حفظ کنید.

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

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

بعد از آن می‌توانید مالکیت این پوشه را به کاربر فعلی‌تان واگذار کنید. برای اینکه بتوانید این واگذاری را انجام دهید از دستور زیر استفاده کنید.

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

در شرایطی که مقدار umask تغییر نداده‌اید، سطح دسترسی دایرکتوری‌ها باید به صورت مناسب باشد. با این حال، برای اینکه مطمئن بشوید که سطح دسترسی هایتان که شامل (خواندن، نوشتن و اجرا برای مالک و فقط خواندن و اجرا برای سایر کاربران) به این صورت باشد، دستور زیر را وارد کنید.

sudo chmod -R 755 /var/www/your_domain

بعد از انجام کد بالا، باید یک فایل HTML را در این مسیر بسازید، برای اینکار از ویرایشگر nano یا هر ویرایشگر دیگری نیز می‌توانید استفاده کنید.

sudo nano /var/www/your_domain/html/index.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 باید بتواند که محتوای‌های این پوشه را به کاربر ارائه دهد، برای اینکه بتواند این عمل را انجام دهد به یک Server Block نیاز خواهد داشت. به جای ویرایش فایل پیش‌فرض، توصیه ما این است که یک فایل جدید را در مسیر زیر وارد کنید.

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 نیز با دامنه‌ مورد نظر جایگزین خواهد شد. در این زمان فایل‌ها را با استفاده از یک لینک به دایرکتوری sites-enabled وصل کنید.

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

نکته قابل توجه: در Nginx، برای فعال‌سازی Server Block ها معمولاً از Symlink یا لینک نمادین استفاده می‌شود. این روش مانند ساخت یک میانبر است و می‌توانید در مواقع مورد نیاز تان، فایل اصلی را در sites-available نگه دارید اما به یاد داشته باشید که باید میانبر آن را از sites-enabled حذف کنید.

اکنون دو Server Block فعال را در اختیار خوهید داشت که هر یک بر اساس دستورات listen و server_name پاسخ‌های لازم را می‌دهند.

  • your_domain: پاسخ‌گوی درخواست‌هایی با دامنه your_domain و www.your_domain خواهد بود.
  • default: درخواست‌هایی که با هیچ یک از دامنه‌ها مطابقت ندارند را پاسخ می‌دهد.

برای جلوگیری از خطای احتمالی حافظه‌ی hash bucket هنگام اضافه کردن دامنه‌های بیشتر، لازم است مقدار خاصی را در فایل /etc/nginx/nginx.conf ویرایش کنید. برای این کار ابتدا باید فایل را باز کنید، برای باز کردن فایل از کد زیر استفاده کنید.

sudo nano /etc/nginx/nginx.conf

بعد از آنکه فایل را باز کردید، دستور زیر را پیدا کرده و علامت # را از ابتدای آن حذف کنید.

server_names_hash_bucket_size 64;

نکته قابل توجه: قرار دادن علامت # در ابتدای خطوط در فایل‌های تنظیمات، به معنی غیر‌فعال‌سازی یا همان کامنت کردن آن خط است. با حذف این علامت، خط مورد نظر دوباره فعال می‌شود.

بعد از آنکه علامت را از ابتدای آن حذف کردید، فایل را ذخیره کنید و آن را ببندید.

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

sudo nginx -t

اگر خطایی وجود نداشت، برای آنکه بتوانید تغییرات را اعمال کنید، سرویس Nginx را بار دیگر راه‌اندازی کنید.

sudo systemctl restart nginx

بعد از راه‌اندازی دوباره، باید دامنه شما را به شما ارائه‌ دهد. برای آنکه بتوانید این عمل را انجام دهید و آن را بررسی کنید، کافی است که آدرس http://your_domain را در مرورگر باز کنید. اگر همه‌چیز درست پیش رفته باشد، باید صفحه‌ای مشابه تصویر زیر نمایش داده شود.

آموزش راه‌اندازی اپلیکیشن وب Go با Docker و Nginx در اوبونتو 22.04
راه‌اندازی اپلیکیشن وب Go با Docker و Nginx در اوبونتو
راه‌ اندازی Server Block برای میزبانی چند دامنه با Nginx
همین الان، بدون کمترین پیچیدگی، سرور مجازی خودتون رو در کمتر از ۳۰ ثانیه، راه‌اندازی کنید.
✅ عملکرد پایدار ✅ ترافیک نامحدود ✅ هزینه به‌صرفه
خرید سرور مجازی ابری

آشنایی با فایل‌ ها و دایرکتوری‌ های مهم Nginx

دیگر با نحوه مدیریت سرویس Nginx آشنا شده‌اید، پیشنهاد لیارا این است که بهتر است چند دقیقه را صرف یادگیری دایرکتوری ها و فایل های مهم آن کنید.

محتوا

/var/www/html: محتوای وب که تنها شامل صفحه پیش‌فرض Nginx است را نشان می‌دهد و از دایرکتوری /var/www/html سرور استفاده می‌کند. این مسیر را می‌توان با تغییر فایل‌های تنظیمات Nginx تغییر داد.

تنظیمات سرور

  • /etc/nginx: دایرکتوری تنظیمات Nginx است و تمام فایل‌های تنظیمات Nginx در این قسمت قرار دارند.
  • /etc/nginx/nginx.conf: فایل اصلی تنظیمات Nginx است و می‌توان این فایل را برای تغییر تنظیمات کلی Nginx و پیکربندی آن تغییر داد.
  • /etc/nginx/sites-available/: دایرکتور‌ی که بلوک‌های سرور برای هر سایت در آن ذخیره می‌شوند است. Nginx از فایل‌های تنظیماتی که در این دایرکتوری قرار دارند، استفاده نمی‌کند مگر اینکه آن‌ها را به دایرکتوری sites-enabled پیوند دهید. معمولا تمام تنظیمات مربوط به بلوک‌های سرور در این دایرکتوری انجام می‌شود و سپس با پیوند به دایرکتوری دیگر فعال می‌شود.
  • /etc/nginx/sites-enabled/: دایرکتوری‌ای که بلوک‌های سرور فعال در آن ذخیره می‌شود. معمولا این فایل‌ها با پیوند به فایل‌های موجود در دایرکتوری sites-available ساخته می‌شوند.
  • /etc/nginx/snippets: دایرکتوری‌ای که شامل قطعات کد قابل استفاده در دیگر بخش‌های تنظیمات Nginx است می‌باشد. بخش‌هایی از تنظیمات که قابلیت استفاده مجدد دارند، می‌توانند در این قسمت قرار بگیرند.

لاگ های سرور

  • /var/log/nginx/access.log: هر درخواستی که به وب‌سرور ارسال می‌شود، در این فایل لاگ ذخیره می‌شود، مگر اینکه Nginx به صورتی تنظیم شده باشد که خلاف این عمل کند.
  • /var/log/nginx/error.log: خطاهای Nginx در این فایل لاگ ذخیره می‌شوند.

بهینه سازی عملکرد برای سرور های پر ترافیک

در این قسمت، تکنیک‌های پیشرفته‌ای را برای بهینه‌سازی، عملکرد سرور Nginx، به خصوص برای سایت‌های پر ترافیک خواهیم پرداخت. تکنیک‌هایی که در ادامه به آن خواهیم پرداخت شامل متعادل سازی بار، کشینگ (Caching) و تنظیمات بهینه یازی پیکربندی سرور است. با پیاده‌سازی این استراتژی‌ها، می‌توانید مطمئن شوید که سرور‌های شما قادر هستند که تعداد زیادی از درخواست‌ها را به صورت هم زمان و کار آمد پردازش کنند.

متعادل‌ سازی بار (Load Balancing)

از توزیع ترافیک شبکه ورودی بین چند سرور پشتیبان برای جلوگیری از بار زیاد بر روی یک سرور استفاده می‌شود. این کار می‌تواند با استفاده از یک لود بالانسر (Load Balancing) مانند HAProxy یا خود Nginx انجام شود.

کشینگ (Caching)

ذخیره داده‌های پرکاربرد در یک کش (Cach) به منظور کاهش نیاز به دریافت دوباره آن‌ها از منبع اصلی می‌باشد. برای این منظور می‌توانید از کش‌هایی مانند Redis یا Memcached استفاده کنید و تنظیمات Nginx را برای استفاده از آن‌ها پیکربندی کنید.

تنظیمات بهینه‌ سازی سرور (Server Configuration Tuning)

برای تنظیم مقادیر مختلف سرور، می‌توانید از افزایش تعداد پردازشگرهای کاری یا تنظیم اندازه بافرها (Buffer) استفاده کنید. این کار با تغییر فایل‌های تنظیمات Nginx و تنظیم مقادیری مانند تعداد پردازشگرهای کاری، اندازه بافرها (Buffer) بر اساس نیازهای سرور و ترافیک‌تان انجام دهید.

نحوه نصب اپلیکیشن‌های وب با Cloudron در سرور مجازی اوبونتو
نصب اپلیکیشن‌های وب با Cloudron در سرور مجازی اوبونتو

تنظیم Nginx به عنوان پروکسی معکوس برای اپلیکیشن‌ ها

Nginx می‌تواند به عنوان یک پروکسی معکوس (Reverse Proxy) در مسیر یابی درخواست‌ها به اپلیکیشن‌ها یا سرویس‌های مختلف عمل کند. این امر زمانی مفید است که چندین اپلیکیشن بر روی یک سرور اجرا شود و بخواهید آن‌ها را به صورت یکپارچه مدیریت کنید.

برای اینکه بتوانید Nginx را به عنوان پروکسی معکوس (Reverse Proxy) تنظیم کنید، باید یک بلوک سرور را در دایکتوری sites-available بسازید و آن را برای گوش دادن به درخواست‌ها در پورت مشخص و تنظیم کنید. بعد از آن از دستور proxy_pass برای ارسال درخواست‌ها به اپلیکیشن یا سرویس مناسب استفاده کنید.

به عنوان مثال، اگر اپلیکیشن Node.js شما روی پورت 3000 اجرا می‌شود، می‌توانید یک بلوک سرور مانند مثال زیر را ایجاد کنید.

/etc/nginx/sites-available/nodejs
server {
    listen 80;
    server_name your_domain;
    location / {
        proxy_pass http://localhost:3000;
    }
}

“برای تنظیم Reverse Proxy با استفاده از Nginx می‌توانید از مستندات لیارا استفاده کنید.”

عیب‌ یابی خطا های رایج Nginx

اگر در زمان کار کردن با Nginx دچار خطاهایی شدید که حل کردن آن‌ها برای شما دشوار بود، می‌توانید از این بخش چند خطای رایج Nginx را بشناسید و در زمان مواجه با آن دچار سر درگمی نشوید.

خطای “403 Forbidden”

این خطا در زمانی رخ می‌دهد که Nginx شما دسترسی به منبع درخواستی را رد می‌کند. این خطا ممکن است که به دلیل نادرست بودن مجوزهای فایل یا دایرکتوری‌ها باشد. در مواقعی اگر کاربر Nginx اجازه دسترسی به محتوا را نداشته باشد هم این خطا رخ می‌دهد.

حل خطای “403 Forbidden”: برای رفع خطا مطمئن شوید که کاربر Nginx مجوزهای درستی را برای دسترسی به محتوا در اختیار داشته باشد. برای این منظور می‌توانید از دستور زیر استفاده کنید.

sudo chown -R www-data:www-data /var/www/html

خطای “502 Bad Gateway”

این خطا در زمانی رخ می‌دهد که Nginx به عنوان پروکسی معکوس (Reverse Proxy) عمل کرده است و سرور پشتیبان پاسخی را به آن نمی‎‌‌دهد. این وضعیت ممکن است که به دلیل پیکربندی نادرست سرور پشتیبان یا عدم اجرای آن باشد.

حل خطای “502 Bad Gateway”: برای حل کردن این خطا، ابتدا باید وضعیت سرور پشتیبان را بررسی کنید و اطمنیان حاصل کنید که به درستی در حال اجرا باشد. اگر سرور پشتیبان در حال اجرا باسد، پیکربندی فایل های Nginx را برای هرگونه خطا در دستور proxy_pass بررسی کنید.

خطای “504 Gateway Timeout”

خطای Gateway Timeout در زمانی اتفاق می‌افتد که Nginx به عنوان پروکسی معکوس (Reverse Proxy) عمل کند و سرور پشتیبان مدت زمان زیادی را برای پاسخ دهی به آن طی کنید. این خطا امکان دارد که به دلیل کند بودن سرور پشتیبان یا تنظیمات تایم اوت (Tim Out) کم در فایل‌های پیکربندی Nginx باشد.

حل خطای “504 Gateway Timeout”: برای حل این مشکل مقادیر تایم اوت (Tim Out) در فایل های پیکربندی Nginx را افزایش دهید. به عنوان مثال می‌توانید خطوط زیر را به بلوک سرور خود اضافه کنید.

proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;

این خطوط تایم‌اوت‌ها را به 300 ثانیه افزایش می‌دهند.

با درک دلایل این خطاهای رایج Nginx و اعمال راه‌حل‌های ارائه‌شده، می‌توانید به سرعت مشکلات سرور Nginx خود را عیب‌یابی و رفع کنید.

آموزش ساخت برنامه Ruby on Rails روی اوبونتو 22.04
ساخت برنامه Ruby on Rails روی اوبونتو 22.04

سوالات متداول

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

تفاوت بین دایرکتوری‌ های sites-available و sites-enabled در Nginx چیست؟

دایرکتوری sites-available محلی برای نگهداری تنظیمات بلوک‌های سرور (Server Blocks) است که هنوز فعال نشده‌اند. اما فایل‌هایی که در sites-enabled قرار می‌گیرند، فعال هستند و توسط Nginx اجرا می‌شوند. معمولاً از دستور ln -s برای ساخت لینک بین این دو استفاده می‌شود تا یک سایت فعال شود.

چطور می‌ توانم دامنه‌ ام را در Nginx به اپلیکیشن Node.js متصل کنم؟

برای این کار باید یک فایل تنظیمات در sites-available بسازید و با استفاده از دستور proxy_pass، درخواست‌ها را به پورت Node.js (مانند 3000) هدایت کنید. بعد از آن با ساخت لینک به sites-enabled آن را فعال کنید و در پایان Nginx را راه‌اندازی کنید.

دلیل خطای “403 Forbidden” در Nginx چیست و چطور باید رفع شود؟

این خطا معمولاً به دلیل نداشتن دسترسی مناسب فایل یا دایرکتوری است. باید مطمئن شوید که فایل‌ها و پوشه‌های مربوطه متعلق به کاربر Nginx (معمولاً www-data) هستند. برای رفع این خطا می‌توانید از دستور زیر استفاده کنید.

sudo chown -R www-data:www-data /var/www/html

چطور می‌ توانم کش (Cache) را در Nginx فعال کنم؟

برای فعال‌سازی کش در Nginx، می‌توانید از تنظیماتی مثل proxy_cache استفاده کنید یا از ابزارهای جانبی مثل Redis یا Memcached استفاده کنید. کش باعث افزایش سرعت بارگذاری و کاهش فشار روی سرور می‌شود.

چگونه می‌ توانم از طریق لاگ‌ های Nginx مشکلات را بررسی و رفع کنم؟

  • لاگ‌های Nginx برای درخواست‌ها در مسیر /var/log/nginx/access.log قرار دارد.
  • لاگ‌های Nginx برای خطاها در مسیر /var/log/nginx/error.log قرار دارد.

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

جمع بندی

در این آموزش از لیارا، با ساختار فایل‌ها و دایرکتوری‌های مهم Nginx آشنا شدید و یاد گرفتید چگونه با استفاده از Server Block‌ ها، چند دامنه را بر روی یک سرور راه‌اندازی کنید. همچنین روش‌های افزایش عملکرد سرور برای ترافیک بالا، راه‌اندازی Reverse Proxy و خطاهای رایج مانند 403 و 502 را بررسی کردیم. حال می‌توانید Nginx را حرفه‌ای‌تر مدیریت کنید و بهینه‌سازی‌های لازم را برای پروژه‌های خود انجام دهید.

چطور با استفاده از Fail2Ban در اوبونتو 22.04 از سرور Nginx خود محافظت کنیم!
نحوه محافظت از سرور Nginx با Fail2Ban در اوبونتو 22.04

به اشتراک بگذارید