DevOps

راه اندازی Nginx و لودبالانس برای وب سایت و API

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

در یک نگاه

راه اندازی Nginx و لودبالانس یعنی قرار دادن Nginx جلوی برنامه ها به عنوان reverse proxy، تعریف upstream و health check و خاتمه SSL. وقتی یک سرور برای ترافیک کافی نیست یا چند سرویس پشت یک دامنه دارید لازم است. تیم فنی پیکوهاست پیکربندی را می نویسد و بدون قطعی reload می کند.

سطح های خدمت

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

استاندارد

قیمت پس از بررسی
  • reverse proxy
  • upstream
  • health check
  • TLS termination
  • کش پایه
درخواست برآورد

کامل

قیمت پس از بررسی
  • reverse proxy
  • upstream
  • health check
  • TLS termination
  • کش پایه
  • reload
  • لاگ
درخواست برآورد

چه کارهایی انجام می شود

reverse proxy

تنظیم proxy_pass و هدرهای لازم مثل Host و آدرس واقعی کاربر

upstream

تعریف گروه سرورها و روش پخش بار، مثل round robin یا least_conn

health check

حذف خودکار سرور ناسالم از چرخه با max_fails و fail_timeout

TLS termination

نصب گواهی SSL و تنظیم HTTPS، ریدایرکت HTTP به HTTPS و پروتکل های امن

کش پایه

کش پاسخ های مناسب با proxy_cache و جلوگیری از کش صفحات حساس

reload

آزمایش پیکربندی و nginx -s reload یا systemctl reload nginx

لاگ

جدا کردن لاگ دسترسی و خطا برای هر دامنه

چه زمانی به این خدمت نیاز دارید

  • یک سرور زیر بار ترافیک کند می شود و می خواهید سرور دوم اضافه کنید.
  • هنگام به روزرسانی یک سرور نمی خواهید سایت قطع شود.
  • چند برنامه یا کانتینر روی پورت های مختلف دارید و می خواهید همه از پورت 443 و با دامنه مشخص در دسترس باشند.
  • گواهی SSL را می خواهید یک جا مدیریت کنید و نه در هر برنامه.
  • پاسخ های ثابت را می خواهید کش کنید تا فشار روی برنامه کمتر شود. برای ارتباط با کارایی، بهینه سازی سرعت را هم ببینید.

مراحل کار

  1. ۱

    در تیکت ساختار فعلی، تعداد سرورها یا کانتینرها، دامنه ها و نوع برنامه را می نویسید.

  2. ۲

    تیم فنی وضعیت فعلی Nginx و پورت ها را بررسی و طرح پیکربندی را با شما هماهنگ می کند.

  3. ۳

    فایل های پیکربندی نوشته می شود و پیش از اعمال نسخه پشتیبان از فایل قبلی گرفته می شود.

  4. ۴

    SSL تنظیم و پیکربندی با nginx -t آزمایش می شود.

  5. ۵

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

  6. ۶

    فایل های تنظیمات و توضیح مدیریت روزمره تحویل داده می شود.

چه چیزی از شما لازم داریم

  • آدرس سرورها و برنامه هایی که باید پشت Nginx قرار بگیرند، همراه پورت و پروتکل آن ها.
  • دسترسی مدیریتی که از طریق فیلدهای خصوصی تیکت یا یک حساب موقت داده می شود. رمز root را در متن عادی تیکت ننویسید. حساب موقت بعد از اتمام کار حذف می شود.
  • دامنه ها و دسترسی به DNS برای هدایت دامنه به سرور و صدور SSL.
  • اگر سشن کاربر روی سرور ذخیره می شود، توضیح نحوه ذخیره آن، چون در لودبالانس باید sticky session یا ذخیره مشترک در نظر گرفته شود.
  • فایروال را هم بررسی می کنیم. برای محافظت از خود سرور محافظت با فایروال را ببینید.

چه چیزی تحویل می دهید و چه چیزی تضمین نمی شود؟

تحویل شامل پیکربندی Nginx نوشته شده و آزمایش شده، SSL فعال، تنظیمات upstream و کش مورد توافق و یادداشتی برای افزودن سرور یا دامنه جدید است.

لودبالانس خودش مشکل برنامه را حل نمی کند. اگر برنامه روی چند سرور درست کار نکند، مثلا فایل ها یا سشن ها محلی باشند، باید آن بخش اصلاح شود. خود Nginx هم اگر تنها یک سرور جلوی برنامه ها باشد، یک نقطه شکست جدید است و برای حذف آن باید طراحی جداگانه ای انجام شود. تغییر کد برنامه و اصلاح خطاهای آن در این خدمت نیست. خطاهای رایج بعد از نصب را در رفع خطای 502 در Nginx و رفع خطای 504 در Nginx می توانید ببینید.

سوالات پرتکرار

reload با restart چه فرقی دارد؟
با reload، Nginx تنظیمات جدید را می خواند و فرایندهای قدیمی اتصال های فعال را تمام می کنند، پس قطعی ندارد. با restart خود سرویس متوقف و دوباره بالا می آید. به همین دلیل پس از nginx -t همیشه از reload استفاده می کنیم.
Nginx برای SSL چه کاری می کند؟
اتصال HTTPS در Nginx تمام می شود و ارتباط با برنامه پشت آن می تواند ساده HTTP روی شبکه داخلی باشد. گواهی SSL فقط در یک جا مدیریت می شود. اگر صدور گواهی خطا دارد، راهنمای Certbot و Let's Encrypt کمک می کند.
برای WordPress هم می شود از این ساختار استفاده کرد؟
بله، ولی فایل های آپلود و پایگاه داده باید بین سرورها مشترک باشند. اگر فقط یک سرور دارید، Nginx به عنوان reverse proxy و کش هنوز مفید است. جزئیات پیکربندی را در مستندات Nginx می توانید ببینید.
اگر یکی از سرورهای upstream از کار بیفتد چه می شود؟
Nginx بعد از چند خطای متوالی آن سرور را برای مدتی کنار می گذارد و درخواست ها را به بقیه می فرستد. اگر همه سرورها از کار بیفتند، کاربر خطا می بیند. برای اطلاع سریع از این وضعیت، مانیتورینگ سرور پیشنهاد می شود.